quandog 发表于 2016-9-9 21:28:24

看到17.3章,纠结了很久,求帮忙

纠结了半天看不懂,总偏移地址怎么算出来的,160乘以ah、add dl,dl看不懂

qq1242009750 发表于 2016-9-10 00:19:56

DOS中一行可以显示80个字符

      例如:01    02
               04   88      01中存放的是颜色   02中存放的是要显示的东西

从上面可以看出 显示一个字符就要用到2个空间 (1个字)

由可得出 DOS的一行有160个字符,160 * n= 行数

例如 : 在第八行的第22个位置显示一个字母
   160*8 :指向第八行   
   因为每显示一个字符要花2个位置,所以 22+22 就是第22个位置

mov ax,0b800H
mov ds,ax
mov al,160
mov dl,8
mul dl
mov di,ax ; 此时di中存放的是第八行的地址
mov dl ,22 ;22代表第22个字符显示的位置,因为显示1个字符要占2个位置所以 22+22
add dl,dl
mov dh,0 ; 把dh清0
add di,dx;di中原本就存放了第八行的地址在加上第22个字符的显示位置,就相当于第八行第22个显示位的地址了
页: [1]
查看完整版本: 看到17.3章,纠结了很久,求帮忙