第四章 汇编语言程序设计
4-1 请写出完成下列操作的伪指令语句。?
(1)将78,-40,0D6H,49H存放在定义为字节变量STAD的存储单元中。?
(2)将字数据1245H,64H,1245,0C7H存放在定义为字节变量ARRAY的存储单元中。?
(3)将字节数据12H,0FCH,0E4H,65H存放在定义为字变量ALPHA的存储单元中,并且不改变数据按字节存储的次序。?
(4)在以BETA为首地址的存储单元中连续存放字节数据:4个8,6个‘S’,20个空单元,10个(1,3)。?
(5)在以STRING为首地址的存储单元中存放字符串THIS IS A EXAMPE。?
(6)用符号TOTAL代替数字780。?
4-2 请画出下列数据定义语句的内存数据排列图。?
DATA1 DB -10,29H,29,‘7’,??
DATA2 DW 2 DUP(‘12’,12),0CDH?
DATA3 DD 123456H?
4-3 假设数据定义语句如下,请画出内存数据排列图。?
X1 DB ?,76?
X2 DW 20 DUP(1,2),80H,??
X3 DD 5?
COUNT EQU $-X2?
请问:COUNT的值是多少?它表示什么意义??
4-4 请画 出下列数据定义语句的内存数据排列图。?
ORG 0100H?
SA1 DB 30,‘30’?
SA2 DW SA1?
SA3 EQU $-SA1?
SA4 DW SA3?
4-5 数据定义语句如下:?
ORG 30H?
DA1 DB 0,‘0’,30H?
DW DA1?
请回答:字数据为3000H存储单元的偏移地址是什么??
4-6 假设数 据定 义语句如下:?
BUF1 DB 50DUP(0)?
BUF2 DW 4567H,671,0D8H?
BUF3 DB 10 DUP(?)?
BUF4 DB 3,4,8,9,10?
(1)写出将BUF1的偏移地址送BX的指令。?
(2)将BUF2的第4个字节数据送CL的指令。?
(3)将0C6H送入BUF3的第8个字节单元中的指令。?
(4)用伪指令写出BUF2和BUF3总字节数。?
(5)用一组程序段,写出BUF2的第2个数据671和BUF4的第4个数据9相加,结果送入BUF3中。?
4-7 根据下面数据定义语句,写出各条指令执行后的结果。?
FLDB DW 0A47CH?
TABLE DB 52H,67H,0C0H,210?
TAE EQU WORD PTR TABLE)?
ARRAY DB ‘1234’?
CNT EQU $-ARRAY??
(1)MOV AX,FLDB AL=( )?
(2)MOV BX,TAE BH=( )?
(3)MOV CH,TABLE+2 CH=( )?
(4)MOV DL,ARRAY DL=( )?
(5)MOV DH,CNT DH=( )?
4-8 数据定义语句如下,指令执行后?
DA1 EQU BYTE PTR DA2?
DA2 DW 0ABCDH? ??
SHR DA1,1?
SAR DA2,1?
上述指令序列执行后,[DA2]=( ),CF=( )。?
4-9 指令AND AX,76H AND 0FH中,请问两个AND操作在什么时间进行?有何区别?如何用立即寻址直接写出该指令??
4-10 将存放在字节变量BCD1中的两个十进制数的ASCII码合并为一字节压缩的BCD码,
存入字节变量BCD2中,试编写程序。?
4-11 不使用乘法指令,将寄存器AX的内容扩大7倍,试编写程序。?
4-12 执行下列指令后,AX寄存器中的内容是什么??
TABLE DW 10,20,30,40,50?
NEW DW 3?
??
MOV SI,OFFSET TABLE?
ADD SI,NEW?
MOV AX,[SI]?
HLT?
4-13 有一个程序段如下所示: ?
OR AL,AL?
JZ L1?
SAR AL,1?
JZ L2?
RCL AL,1?
NOT AL?
JZ L3?
请回答:(1)当AL=〖CD#4〗,执行该程序转向L1;(2)当AL=〖CD#4〗,执行该程序转向L2;(3)当AL=〖CD#4〗,执行该程序转向L3。?
4-14 在BUFF单元中有一个BCD码A,试编写程序计算Y,结果送DES单元中。?
Y=2A A<20?
Y=A 20≤A<60?
Y=80 A≥60?
4-15 试编写程序,要求比较数组BUFER中的3个16位符号数。根据比较结果,置FLAG标志,要求画出程序流程图。?
(1)如果3个数都不相等,置FLAG为0。?
(2)如果3个数有两个相等,置FLAG为1。?
(3)如果3个数全相等,置FLAG为2。?
4-16 有程序段如下所示,请回答。?
(1) MOV AX,100?
MOV CX,5?
LOP: SUB AX,CX?
LOOP LOP?
HLT?
该程序段执行后,AX=? CX=??
(2) PAS1 DB 0,1,2,3,4,5,6,7,8,9?
PAS2 DB 5 DUP(?)
??
MOV CX,5?
MOV BX,5?
MOV SI,0?
LOP: MOV AL,PAS1[BX+SI]?
MOV PAS2[SI],AL?
INC SI?
LOOP LOP?
HLT?
该程序段执行后,PAS2数据区的数依次为( )。?
4-17 请编写实现下述功能的程序:在以DATA为首地址的数据区中存有100个字符号数
,要求找出其中的最大数送MAX,最小的数送MIN。?