-86- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
-g=1e 2b | |||||||||||||||||||||
AX=0944 | BX=0013 | CX=0000 | DX=0000 | SP=FFFC | BP=0000 | SI=0000 | DI=0000 | ||||||||||||||
DS=1031 | ES=1021 | SS=1031 | CS=1033 | IP=002B | NV UP EI PL NZ NA PO NC | ||||||||||||||||
1033:002B | C20200 | RET 0002 | |||||||||||||||||||
带参数的RET指令可以自动修改SP寄存器,如果在这里简单的使用不带参数的RET指令,则这个子程序返回后SP应该等于"0FFFEH",RET指令加上参数之后,SP寄存器就会被修改为0000,等于以前压入的参数自动出栈。 | |||||||||||||||||||||
-t | 注意SP寄存器的变化 | ||||||||||||||||||||
AX=0944 | BX=0013 | CX=0000 | DX=0000 | SP=0000 | BP=0000 | SI=0000 | DI=0000 | ||||||||||||||
DS=1031 | ES=1021 | SS=1031 | CS=1033 | IP=0010 | NV UP EI PL NZ NA PO NC | ||||||||||||||||
1033:0010 | B409 | MOV AH,09 | |||||||||||||||||||
g=10 | |||||||||||||||||||||
WELCOME TO PC WORLD | ← 转换后的字符串 | ||||||||||||||||||||
Program terminated normally | |||||||||||||||||||||
下面这个程序也是一个有关如何应用BP寄存器实例,这个程序示例揭示了BP寄存器的又一用途--动态分配内存。 | |||||||||||||||||||||
CALC.ASM CR LF data mess ascii data code main |
equ equ segment assume db 'welco db '01234 ends segment assume proc mov mov mov push mov call call mov |
0dh 0ah ds:data me to pc world',0dh,0ah,24h 56789abcdef' cs:code far ax,data ds,ax dx,offset mess dx bx,offset ascii calc hexout ah,4ch |
;回车符的ASCII码 ;换行符的ASCII码 ;定义一个小写字符串 ;十六进制的数字 ;设置数据段寄存器 ;DX寄存器指向字符串首 ;字符串首地址压入堆栈 ;BX寄存器指向ASCII表 ;调用CALC子过程计算字符数 ;调用HEXOUT子过程输出字符数 ;结束进程 |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |