-222- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
exit: main disp loop2: loop3: next_dot: output: disp code |
mov int endp proc push push mov mov mov mov mov mov int lodsw xchg push mov shl push mov jnc mov jmp mov int pop loop inc pop loop pop pop ret endp ends end |
ah,4ch 21h near bx si cx,16 si,offset buffer dh,3 dl,32 ah,2 bh,0 10h ah,al cx cx,16 ax,1 ax ah,0eh next_dot al,2ah output al,20h 10h ax loop3 dh cx loop2 si bx main |
;结束进程 ;DISP子过程 ;保存要使用的寄存器 ;处理16个字(32字节) ;SI寄存器指向文件缓冲区 ;设置光标初始行、列位置 ;设置光标位置 ;取得一个字的数据 ;交换高低字节 ;暂存CX寄存器 ;处理16个数位 ;取得的数据左移1位 ;暂存移位后的结果 ;选择10H中断的0EH功能 ;若移出的数位为0,转NEXT_DOT输出空格 ;AL寄存器送入字符"*" ;转OUTPUT输出AL寄存器中的字符 ;AL寄存器送入空格符 ;显示输出 ;恢复移位后的结果 ;继续处理下一个数位 ;光标行号加1 ;恢复CX寄存器 ;转LOOP2继续处理下一个字 ;恢复入口处保存的寄存器 ;返回主过程 |
||||||||||||||||||
在这个程序中我们使用DW伪指令定义了5个偏移量,当然这样做是比较累的,事实上我们 | |||||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |