![]() | 第10章 细节补充 | -285- | |||||||||||||||||||
loop1: ; ; loop2: loop3: main bin8o loop4: out_chr: |
lodsb call loop call mov mov clc mov shl lodsb rcr mov loop mov mov lodsb call loop ret endp proc push mov mov mov shl mov jc mov int |
bin8o loop1 crlf cx,8 si,offset number+7 al,byte ptr [si] al,1 al,1 byte ptr [si+1],al loop2 cx,8 si,offset number+7 bin8o loop3 near cx cx,8 bl,al ah,0eh bl,1 al,31h out_chr al,30h 10h |
;取得一个字节 ;按二进制形式显示 ;调用CRLF输出回车、换行符 ;准备8个字节 ;SI寄存器指向64Bit数据的最高16位 ;预先清CF标志,完成逻辑移位 ;如用这两个指令代替CLC,可完成算术移位 ;取得一个字节 ;带进位标志的右循环移位,最低位移入CF ;将移位后的数据送回内存 ;返回LOOP2继续处理下一个字节 ;再次显示移位后的64Bit数据 ;结束进程 ;按二进制形式显示输出字程序 ;保存CX寄存器 ;显示8个数位 ;将待显示的数据送入BL寄存器 ;选择10H中断的0EH功能 ;将待显示数据向左移1位,最高位移入CF ;准备显示"1" ;若移出的位为1,转OUT_CHR显示"1" ;若移出的位为0,准备显示"0" ;调用10H中断显示AL寄存器中的字符 |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |