![]() | 第5章 子程序和串处理 | -87- | |||||||||||||||||||
main calc caloop: return: calc hexout hexloop: |
int endp proc push mov sub push mov mov mov cmp jz mov int inc inc jmp mov pop mov pop ret endp proc push mov push mov rol push and xlat mov mov int pop pop |
21h near bp bp,sp sp,2 bx bx,[bp+4] word ptr [bp-2],0 dl,byte ptr [bx] dl,24h return ah,2 21h bx word ptr [bp-2] caloop ax,[bp-2] bx sp,bp bp 2 near ax cx,2 cx cl,4 al,cl ax al,0fh ascii dl,al ah,2 21h ax cx |
;CALC子过程 ;保存BP寄存器 ;堆栈指针置入BP寄存器 ;堆栈指针上移2字节 ;保存BX寄存器 ;字符串首地址送入BX寄存器 ;堆栈中空出的2个字节清零 ;从字符串中取一个字符 ;到字符串结尾了吗? ;到字符串结尾,返回主程序 ;选择DOS API的02功能 ;调用中断显示字符 ;BX指向下一个字符 ;堆栈中的计数器加1 ;处理下一个字符 ;字符个数送入AX寄存器 ;恢复BX寄存器 ;恢复堆栈指针 ;恢复BP寄存器 ;返回主程序 ;HEXOUT子程序 ;保存AX寄存器 ;显示2位十六进制数 ;保存CX中的计数值 ;准备循环移位次数 ;循环移位 ;保存AX寄存器 ;保留计数值的高4位 ;取得对应的ASCII码 ;准备显示数字对应的ASCII码 ;显示数字 ;恢复AX寄存器 ;恢复CX寄存器 |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |