-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 |