目录 上一页 下一页 下一章

第9章 图形显示 -245-






loop3:






next_dot:













disp
code

mov
mov

lodsw
xchg

test
push
jz
mov
mov
int

inc
shr
pop
dec
jnz
inc
pop
loop

pop
pop
pop
ret
endp
ends
end
cx,152
di,16


ah,al

ax,bx
ax
next_dot
ah,0ch
al,2
10h

cx
bx,1
ax
di
loop3
dx
cx
loop2

di
si
bx



main
;汉字左上角的X坐标送入CX寄存器
;处理16个Bit

;取得一个字
;交换高低字节

;测试"掩模"中指定的数位
;暂存待测数据
;若所测试的数位为0,转NEXT_DOT继续
;画一个洋红色的点



;X坐标加1,准备处理下一个数位
;BX寄存器中的"掩模"右移1位
;恢复AX寄存器中的待测数据
;已处理了全部16个数位了吗?
;未处理完全部数位,转LOOP3继续
;Y坐标加1,准备处理下一条线
;恢复CX寄存器中的计数值
;转LOOP2继续

;恢复寄存器


;返回主过程



  这个程序和第三章的PROG4程序有一点相象,程序PROG4是利用AND指令进行按位测试工作的。实质上CPU执行TEST指令和执行AND指令是一样的,即把待测试的寄存器与"掩模"数据做一次"与"操作,根据结果设置标志位,但"与"之后的结果不保留。TEST与AND的关系类似于CMP与SUB的关系,将这样两个指令联合记忆效果不错。当然,也可以按以下规律记忆:
  (1)TEST指令后的源操作数为被测试数据,目的操作数为"掩模",需要测试哪几个数位,"掩模"中相应的数位就要置1。
  (2)若被测试的数位都是0,那么ZF标志将被置1,指令"JZ"可以完成转移,反之如果被测数位中有一个不是0,ZF标志就会清0,指令"JNZ"可以完成转移。仔细观察"Z/NZ"与被测数位之间的关系可以很好地掌握TEST指令。
  数据的分析看来不是很困难,那么如何获得字模数据呢?所有的汉字操作系统都带有标

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章