汇编语言的语句类型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言的语句类型有两种:指示性语句和指令性语句。指示性语句可以位于任何段中,指令性语句必须位于代码段内。
指示性语句
又称伪操作语句,它不是8086/8088cPU的指令,它与汇编程序指示性语句的功能主要是变量定义、为数据分配存储空间、告诉汇编程序如何对源程序汇编等。源程序汇编后,指示性语句不生成目标代码,所以常被称为伪指令。
指令性语句
指令性语句是可执行语句,是8086/8088CPU的指令。源程序汇编后,指令性语句生成目标代码。第3章中介绍的所有指令都是指令性语句的主体,其操作数最多只能有2个。
. 2018/04/23 12:17:12
2.汇编语言源程序由若干段组成:数据段、附件数据段、堆栈段和代码段等,段与段之间的顺序可以任意排列,每段由SEGMENT开始,以ENDs结束,每段的开始和结束都附有相同的名字。一个程序一般定义三个段:数据段、堆栈段和代码段,必要时增加定义附加数据段,能独立运行的程序至少包含一个代码段。
张宇新2018/04/23 12:19:12
3(1)BUFF DB 200 DUP(?)
(2)DB 'BYTE','WORD'
(3)DW 2040H,0300H,10H,0020H,1048H
张宇新2018/04/23 12:19:25
5(1)MOV SI,OFFSET NAME
(2)MOV AX,WORD PTR [LIST]
(3)MOV AX,SIZE LIST
张宇新2018/04/23 12:31:44
6(1)200X100+55
(2)C8AND0F-0F=0
(3)100MOD15=10
(4)0FORC8=CFH
张宇新2018/04/23 12:31:59
7DATA SEGMENT
NUM DW X
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,0
MOV BX,NUM
MOV CX,16
NEXT:SHL AX,1
JNC NEXT1
INC AL
NEXT1:LOOP NEXT
MOV AH,4CH
INT 21H
CODE ENDS
END START
张宇新2018/04/23 12:38:12 8DATA SEGMENT
BUFFER DB 100 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
XOR DX,DX
MOV CX,100
MOV SI,OFFSET BUFFER
NEXT:MOV AL,[SI]
INC SI
TEST AL,80H
JNZ GOON
CMP AL,0
JZ GOON
INC DX
GOON:LOOP NEXT
MOV NUMBER,DX
MOV AH,4CH
INT 21H
CODE ENDS
END START
张宇新2018/04/23 12:39:49
9这是一个查表程序,查表取出HEX中数字对应的ASCII码。
张宇新2018/04/23 12:48:35
10过程定义的一般格式为:PROC ENDP。如果一个子程序被多次调用,保护
与恢复(主程序)现场就非常重要。主程序每次调用子程序时,主程序现场不会相同,保护与恢复现场的工作就只能在子程序中进行。原则上,首先把子程序中要用到的寄存器、储存单元、状态标志等压入堆栈或存入特定空间中,然后子程序才可以使用它们,使用后再将它们弹出堆栈或从特定空间中取出,回复他们原来的值,即恢复主程序现场。保护和恢复现场常使用PUSH和POP指令。
张宇新2018/04/23 12:58:18
11DATA SEGMENT
BUF DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX
MOV AL,BUF
MOV BL,AL
NEXT:MOV CL,4
SHR AL,CL
AND AL,0FH
CMP AL,0
JZ GOON
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
GOON:MOV AL,BL
AND AL,0FH
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
张宇新2018/04/23 13:04:46
12DATA SEGMENT
M1 DB 100DUP(?)
DATA ENDS
EDATA SEGMENT
M2 DB 100DUP(?)
EDATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:EDATA START:MOV AX,DATA
MOV DS,AX
MOV AX,EDATA
MOV ES,AX
LEA SI,M1
LEA DI,M2
MOV CS,200
CLD
REPE CMPSB
AND CX 0FFFFH