-90- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
hexout code |
mov int pop pop loop mov mov int mov int pop ret endp ends end |
ah,2 21h ax cx hexloop dl,CR ah,2 21h dl,LF 21h ax main |
;显示数字 ;恢复AX寄存器 ;恢复CX寄存器 ;循环至HEXLOOP处理下个数位 ;显示回车符 ;显示换行符 ;恢复AX寄存器 ;返回主程序 |
||||||||||||||||||
程序中DW伪指令的用法有些奇特,一般情况下我们常用DB、DW伪指令定义一些变量,这些变量往往有初值,所以在DB、DW后面总要跟一些字符串或数字。如果所定义的变量无初值,则我们就可以用"DW ?"这样的用法,"?"表示留出相应的存储空间,但不存入数据。不过请不要被"不存入数据"这句话误导,说是不存入数据,实际上这些存储空间将被初始化为"0","D# ?"和"D# 0"是完全一样的。这和我们从堆栈中动态分配到的存储空间不一样,当我们从堆栈中分配到自动变量空间后,我们有时要自己将其初始化为0,仔细研究一下CALC1.ASM不难发现这一点,然而用"D# ?"定义的变量就无需初始化。 新出现的"DUP"(Duplication)是一个操作符: |
|||||||||||||||||||||
DUP | |||||||||||||||||||||
我们在第四章中谈到过一个分析运算符--OFFSET,用于取得某些变量的偏移地址。现在讨论的"DUP"操作符主要用于生成多个具有相同位宽的变量,用法很简单: | |||||||||||||||||||||
变量名 DB/DW 变量个数 DUP 数值1,数值2,... | |||||||||||||||||||||
"变量个数"应是一个正整数,用来指定括号中的数据项重复次数,请看下例: | |||||||||||||||||||||
TEMP.ASM data var1 var2 var3 data end |
segment db db db ends |
2 dup ('A') 2 dup ('A','B','C') 2 dup ('A',2 dup('B'),'C') |
;定义'AA' ;定义'ABCABC' ;定义'ABBCABBC' |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |