-288- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
msg vram data code main loop1: exit: main code |
db dd ends segment assume proc push xor push mov mov mov int lea les mov lodsb cmp jz stosw jmp mov int ret endp ends end |
'World Wild Web-Paradis 0b8000670h cs:code far ds ax,ax ax ax,data ds,ax ax,0003h 10h si,msg di,vram ah,2 al,0 exit loop1 ah,0 16h main |
e and Tomb',0 ;采用DD伪指令直接定义32位指针 ;初始化堆栈 ;初始化DS寄存器 ;设置字符显示模式3 ;将字符串MSG的有效地址送入SI寄存器 ;将显示缓存的指针送入ES:DI ;字符属性字节 ;取得一个字符 ;已经到字符串结尾了吗? ;已到字符串结尾,转EXIT结束 ;将字符及属性字节送入显示缓存中 ;转LOOP1继续显示下一个字符 ;等待键盘输入 ;结束进程 |
||||||||||||||||||
这个程序中引入了一些新的指令和伪指令,取代了"OFFSET"的指令就是"LEA": | |||||||||||||||||||||
![]() |
助记符:LEA(Load Effective Address) 用 途:将数据的有效地址送入指定寄存器 格 式:LEA 寄存器,数据标号 执 行:标号对应的偏移地址送入指定的寄存器中 |
||||||||||||||||||||
"有效地址"这个词听上去有些耳生,其实有效地址就是数据在内存某个段内的偏移地址。使用LEA指令时不能再用"OFFSET"分析运算符,否则反而有错误。这个指令执行的操作 | |||||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |