目录 上一页 下一页 下一章

第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

目录 上一页 下一页 下一章