第4章 汇编语言制程序的设计.pptVIP

  • 1
  • 0
  • 约2.44千字
  • 约 43页
  • 2021-12-06 发布于福建
  • 举报
语句的构成元素: 标号——指令的符号地址,用来代表指令在存储器中的地址。只能出现在指令性语句中,标号后应加上冒号。 名字——段、过程、变量的名字,用来代表它们在存储器中的地址。只能出现在指示性语句中,名字后不加冒号。 指令助记符——8086助记符、伪指令 操作数——即指令的操作对象 对指令性语句——0,1,2个 对指示性语句——根据需要而定 操作数之间以逗号分隔 操作数可以是:寄存器、存储单元、常数或表达式 例如:AX,[DI+BX+10],200,16*8+TABLE,等等;注释——以分号开头,可放在指令后,也可单独一行。 ?注意注解的写法。要写指令(段)在程序中的作用,而不要写指令的操作。 例如:以下为同一条指令写的注释 1)MOV CX,100 ;传送100到CX 2)MOV CX,100 ;循环计数器置初值 显然,第二种写法要比第一种写法要好。 ;*;4.1.3 数据项与表达式;2.标号——指令所在内存单元的符号地址;3.变量;标号和变量名的使用规则 组成:A-Z(不分大小写), 0-9, ? . _ $ 不能以数字开头,句号(.)只能作为首字符 长度小于31个字符 不能与保留字(指令助记符、伪指令、预定义符号等)重名 不能重复定义 例如: 正确的:LP1, AGAIN, NEXT, _GO, OK_1 错误的:4M, LOOP, AAA, #HELP, +ONE;4.表达式;1)算术运算符—— +、-、*、/,MOD;2)逻辑运算符—— AND、OR、XOR、NOT;3)关系运算符——EQ、NE、LT、GT、LE、GE;4)取地址运算符——SEG、OFFSET;5)取值运算符——TYPE、LENGTH、SIZE;6)属性运算符——PTR;例:MOV BYTE PTR[DI],0 ;字节类型 MOV WORD PTR[DI],0 ;字类型 MOV [DI],0B5H ;类型不定 PTR也可用来进行强制类型转换 例:STR1 DW ? ;STR1定义为字类型 MOV AX,STR1 ;合法 MOV AL,STR1 ;非法 MOV AL,BYTE PTR STR1 ;合法;4.2 伪指令;4.2.1 数据定义伪指令;例1: DATA_B DB 10,5,10H DATA_W DW 100H,-4 DATA_D DD 0FFFBH 汇编后的内存分配情况 如右图所示。;例2:操作数可以是字符串,例如 STR DB ‘HELLO’ 汇编后的情况如图:;操作数?用来保留存储空间,但不存入数据. 例3:ABC DB 0,1,2,3,4,’OK’,’$’ RSV DW ?,?,?,?,?,?,?,? 复制操作符DUP: 重复的数据可以使用复制操作符DUP,如上面RSV亦可写成: RSV DW 8 DUP(?) 若操作数中若使用$,则表示的是地址计数器的当前值。;例: TABLE DB 10 DUP(?) BUFFER DW TABLE,$+3 设TABLE的偏移地址为0080H,则汇编后如下图所示:;4.2.2 符号定义伪指令;例:FIVE EQU 5 COUNT EQU CX TEN EQU 10 DIST = BYTE PTR[SI+BP] GOTO = JMP … MOV AX, TEN MOV CX, COUNT ADD DIST, FIVE DIST = WORD PTR[SI+BP+1] ADD DIST, AX GOTO LABEL ;4.2.3 段定义伪指令;这两个伪指令总是成对出现,二者前面的段名应一致。SEGMENT说明了一个段的开始,ENDS说明了一个段的结束。 对数据段和堆栈段,段中的语句一般是变量定义。对代码段则是指令语句。 如: data SEGMENT 指令语句 data ENDS ;ASSUME伪指令;但要注意,ASSUME伪指令只是告知汇编程序有关段寄存器与段的关系,并没有给段寄存器赋予实际的初值。故下面的语句 MOV AX,DATA MOV DS,AX MOV ES,AX 将段基址装入段寄存器。如果程序中用到堆栈段,则SS也需装入实际的初值。 代码段基地址不需要程序员装入CS寄存器,而由OS负责装入。;*;*;3) 类别

文档评论(0)

1亿VIP精品文档

相关文档