目录 上一页 下一页 下一章

-96- PC机汇编语言实战精解









main

disp





;#1部分





;----
not_end:



;#2部分
retn_addr







;----
disp
code

mov
mov
int
push
call

mov
int
endp

proc
push
mov
mov
cmp
jnz
----
mov
mov
int
pop
ret
----

inc
push
call
----

pop
dec
mov
mov
int
pop
ret
----
endp
ends
end
dx,offset mess
ah,9
21h
dx
disp

ah,4ch
21h


near
bp
bp,sp
bx,[bp+4]
byte ptr [bx+1],'$'
not_end
显示最后一个字符---
dl,byte ptr [bx]
ah,2
21h
bp



bx
bx
disp
显示上一个字符---

bx
bx
dl,byte ptr [bx]
ah,2
21h
bp




main
;DX寄存器指向字符串
;显示这个字符串

;字符串首地址压入堆栈
;调用DISP子过程进行逆序显示

;结束进程



;DISP子过程入口
;保存BP寄存器
;堆栈指针送入BP寄存器
;从堆栈中取得字符串指针
;判断指针指向的字符是否为最后一个
;不是最后一个则转NOT_END

;最后一个字符送入DL寄存器
;显示这个字符

;恢复BP寄存器
;返回(实际将返回RETN_ADDR处)


;字符串指针指向下一个字符
;字符串指针压入堆栈
;调用DISP子过程逆序显示剩余字符


;取回字符串指针
;BX指向前一个字符
;取得前一个字符
;显示前一个字符

;恢复BP寄存器
;返回(反复返回至RETN_ADDR处,最后
;返回至主过程)



  "DISP"是这个程序的核心。主过程调用"DISP"之前先在堆栈中压入了一个指向字符串首的

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章