Wangzhike / HIT-Linux-0.11

网易云课堂选的操作系统课实验的代码及相关记录
http://mooc.study.163.com/course/HIT-1000002004?tid=2001329005#/info
448 stars 189 forks source link

实验询问bootsect.s #1

Closed tmp-coder closed 7 years ago

tmp-coder commented 7 years ago

你好!我最经也在学这们课程,途中遇到一些问题不知能否向你请教(因为老师好像已经不再答疑了) 请问bootsect.s中的字符串长度是怎么计算的啊? 我更改输出字符串为 msg1: .byte 13,10 .ascii "ZZTos is running..." .byte 13,10,13,10 这个字符串长度只有19 可是我将98行语句更改为 mov cx,#20 ! 显示字符串长度 竟然不能输出完整字符串,请问这是什么问题

Wangzhike commented 7 years ago

说起来挺遗憾的,只有第一次开课的时候李老师跟大家进行了互动,后面就没有见老师再回答过相关问题。我从第一次就开始选了这门课,中间断断续续一直没有把课程学完,这学期希望能够把课程再重新学一下,欢迎一起交流。 好了,言归正传 这里的字符串长度是要算.byte 13, 10这两个字节的,它们的作用相当于\r\n,最终在bochs终端里面显示换行,所以按照你的写法,字符串的长度应该是19+6=25,你试试,这样改了之后应该没问题,之前的不能正常显示字符串是因为.byte 13,10是两个字节,.ascii "ZZTos is running..."是19个字节,加起来一共有21个字节,你的现象是不是最后只显示了两个省略号?(还是其他)

tmp-coder commented 7 years ago

哦,我明白了,它是将msg1:的所有内容输出来包括.byte 13,10,所以是字符串长度加上所有.byte共19+6=25.多谢,我并不是学计算机的,并没有学过汇编.希望能一直向你请教.

Wangzhike commented 7 years ago

我本科是自动化专业的,研究生才读的计算机,欢迎交流。