编辑: ok2015 | 2019-07-11 |
ABCDE'
;
为每个字符分配1个单元 STR2 DW '
AB'
,'
CD'
;
为由2个字符组成的字符串分配2个单元 41H 42H 43H 44H 45H STR1 42H 41H 44H 43H STR2
四、数据定义及存储器分配伪操作―数据定义伪指令(表达式) 带DUP的表达式 变量名 DBDWDDDQ 表达式1 DUP(表达式2) D1 DB 20H DUP(?);
预留20H个字节,内容任意 次数 内容 D2 DB 10H DUP('
ABCD'
);
重复10H个'
ABCD'
,共占40H字节 D3 DW 10H DUP(4);
重复10H个字单元,内容0004H,共占20H字节
四、数据定义及存储器分配伪操作―数据定义伪指令(表达式) 带DUP的表达式―DUP操作符可重复使用 D4 DB 10H DUP(4 DUP(2),7) ;
重复10H个(2,2,2,2,7),共占50H字节 变量的使用―在指令语句中 对已经定义的变量直接引用其符号名DATA SEGMENTDA1 DB 0FEHDA2 DW 52ACHDA3 DB 10H DUP(?) DA4 DW 10H DUP(1) …… MOV AL,DA1 ;
AL=FEH MOV BX,DA2 ;
BX=52ACH MOV SI,2 MOV DA3[SI],AL MOV DA4[SI],BX 直接寻址 相对变址寻址
52 AC FE DA1 DA2 DA3 DA3+1 DA3+2 DA4 DA4+2 FE AC
52 00
01 00
01 变量的使用―在伪指令语句中 DATA SEGMENTDA1 DB 12HNUM DB 75HARRAY DW 20H DUP(0) ADR1 DW NUMADR2 DD NUMADR3 DW ARRAY[2] …… DS=21FDH
12 75
00 21
01 00 FD DA1 NUM ARRAY ADR1 ADR2 ADR3
00 01
00 00
04 DW:定义的存储单元存放相应变量的偏移量DD:定义的存储单元存放相应变量的偏移量和段基值不能使用DB N
五、表达式赋值伪操作 等值语句符号 EQU 表达式 ;
将表达式的值赋给左边的符号 表达式的形式1) 常数或数值表达式CNT EQU 5NUM EQU 13+5+4 2) 址表达式ADR1 EQU DS:[BP+14] 3) 变量、标号或指令助记符W0 EQU WORD PTR DA_BYTE 等值语句仅在汇编源程序时作为替代符号用,不产生任何目标代码,不占存储单元在同一程序中,同一符号不能用EQU重复定义
五、表达式赋值伪操作 等值语句符号 = 表达式 ;
功能与EQU相同,但可重复定义 CNT = 5NUM = 4……NUM = NUM+10HCBD = DDA……CBD = ADD 地址计数器$ :汇编程序在为每条指令或变量分配内存时,使用当前位置计数器来指示下一指令或数据的偏移量,用$表示其值定位伪指令:ORG 表达式将表达式的值赋给当前位置计数器.即该伪指令后的指令或变量以表达式的值为偏移量 EVEN使下一指令或变量的偏移量为偶数 ALIGNboundary boundary的取值为2的整数倍
六、地址计数器及对准伪操作
五、地址计数器及对准伪操作(例) DATASEGMENT ORG 30HDB1DB 12H,34HORG $+20HSTRDB '
ABC'
CNTEQU $-STREVENDW1DW 20H DUP(0)DATAENDS……CODE SEGMENTASSUME CS:CODE,DS:DATAORG 10HSTART:MOV AX,DATAMOV DS,AX……CODE ENDSEND START DATA 30H DB1 43H DD1 STR DW1 42H 41H
00 12
34 40H 20H 30H
00
六、基数控制伪操作 汇编语言源程序默认使用十进制,其他用标注表示(B,O,H)格式:RADIX 表达式功能:把默认的基数改为
2、
8、16等 除指定进制外,其他加标注 MOV BX,0FFHMOV BX,178 RADIX 16MOV BX,0FFMOV BX,178D
七、程序开始和结束伪操作 开始:NAME modul_nameTITLE text 程序终止和汇编结束是两码事 结束:END 起始地址
一、指令语句 使CPU产生动作、并在程序执行时才处理的语句,就是第3章学习的处理器指令书写格式[标号:] 指令助记符 [DST[ ,SRC]] [;
注释]标号:一条指令的符号地址.可以省........