5.1、基本概念
1、汇编语言源程序的框架中,ASSUME 指令的作用?它会给相应的段寄存器赋值吗?
伪指令。ASSUME的作用是关联段名与段寄存器,不会赋值。
2、如何装填数据段寄存器?代码段寄存器需要装填吗?
数据段一定要装填,代码段不装填
3、源程序最后一条指令是什么,其中的标号的含义是什么?
END START
4、在纸上写出一个汇编语言源程序的框架(有数据段和代码段),拍照上传
DATA SEGMENT
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS,AX
MOV AH, 4CH
INT 21H
CODE ENDS
END START
5、什么是伪指令?和指令相比有何特点?
一种不产生目标代码的语句,仅仅在汇编过程中告诉汇编程序如何汇编
6、指令格式中,名字的属性有什么? 段的名字的属性是什么?指令的名字的属性是什么?变量的名字的属性是什么?
在指令语句中,名字就是一个标号。标号有三个属性:段、偏移地址和类型。
变量的属性:段、偏移量、类型
7、运算符的功能:SEG OFFSET SIZE LENGTH PTR LOW HIGH
SEG:可以得到一个标号或变量所在段的段地址。
OFFSET:得到一个标号或者变量的偏移地址。
SIZE:如果一个变量已用重复操作符DUP说明,则利用SIZE可得到分配给该变量的字节总数。如果未用DUP说明,则得到的结果是TYPE运算的结果。
LENGTH:如果一个变量已用重复操作符DUP说明其元素个数,则可得这个变量中元素的个数。如果未用DUP,结果总是1.
PTR:指定或修改存储器操作数的类型。
LOW:(字节分离运算符)
HIGH
5.2、汇编语言源程序的上机过程
1、简述汇编语言程序的上机过程
1)用编译程序(EDIT)建立ASM源程序文件
2)用汇编程序(MASM或ASM)把ASM文件汇编成OBJ文件
3)用连接程序(LINK)把OBJ文件转换成EXE文件
4)在DOS命令行直接键入文件名执行该文件。
2、为什么DS和ES必须装填?
3、INT 20H 指令的功能?它存放在哪里?如何才能执行到它?
4、标准DOS返回方式中,采用了什么样的方式来找到INT 20H 这条指令的?
INT 20H指令是返回DOS的标准方法。
存放在程序段前缀区PSP的第一个第二个位置存储单元
1)、把主程序定义成一个远距离过程
过程名 PROC FAR
…
RET
过程名 ENDP
2)在给DS、ES赋初值之前,用下列三条指令,把PSP首单元的逻辑地址压入堆栈,即
PUSH DS ;PSP段地址压栈
MOVE AX,0 ;或用XOR AX,AX指令
PUSH AX ;PSP段首地址的偏移地址
;压栈
DATA SEGMENT
NUM DB 82H,68H,88H
SUM DB ?
DATA ENDS
CODE SEGMENT
MAIN PROC FAR ;
ASSUME CS:CODE,DS:DATA
START:PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA BX,NUM
MOV AL,[BX]
INC BX
ADD AL,[BX]
INC BX
ADD AL,[BX]
MOV SUM,AL
RET
MAIN ENDP
CODE ENDS
END START