汇编语言习题及答案
- 格式:doc
- 大小:82.00 KB
- 文档页数:19
汇编语言复习题
简答题
1.存储器地址为什么要分段?物理地址是如何形成的?
2.IBM PC机的寻址方式(与数据有关的寻址方式)有几种?各举一例说明。
3.80x86微机的存储器中存放信息如下图所示。试读出30022H与30024H字节单元的内容与30021H和30022H字单元的内容。
4.现有(DS)= 2000H,(BX)=0100H,(SI)= 0002H, (20100)= 12H,
(20101)=34H, (20102)= 56H, (20103)=78H, (21200)=2AH, (21201)=
4CH, (21202)=B7H, (21203) = 65H,试说明下列各条指令执行完后AX的内容。
1) MOV AX,1200H 2) MOV AX,BX
3) MOV AX,[1200H]
4) MOV AX,[BX]
5) MOV AX,1100[BX]
5.完成下列各式补码数的运算,并根据结果设置标志位SF,CF,ZF,OF,指出运算结果是否有效
1) 01001001b+10011101b
2) 01000001b-10101011b
6.有符号定义语句如下:
BUFF DB 1,2,3,’123’
EBUFF DB 0
L EQU EBUFF-BUFF
问L的值为多少?为什么?
答案:
1、IBM PC系列机的字长为16位,能够访问的最大存储空间64KB,而在IBM PC内存为1MB的情况下,访问这1MB的存储空间需要20位。为了解决字长为16位的机器访问1MB的存储空间,将1MB空间每16B分为一段,共64K段,以16位段地址:16位偏移地址的形式组成,物理地址通过如下方式计算:
物理地址 = 段地址×10h + 偏移地址
2.IBM PC机的寻址方式有7种:
1)立即寻址:MOV AX, 1234H;
2)寄存器寻址:MOV AX, BX;
3)直接寻址:MOV AX, [1234H];
4)寄存器间接寻址:MOV AX, [BX];
5)寄存器相对寻址:MOV AX, 20H[BX];
6)基址变址寻址:MOV AX, [BX][SI];
7)相对基址变址寻址:MOV AX, 100H[BX][SI];
3.解:(30022H)= 12H
(30024H) = 56H
(30021H) = 12CDH
(30022H) = 3412H
4.解:
(1) MOV AX,1200H
解:(AX)=1200H
(2) MOV AX,BX
解:(AX)= 0100H (3) MOV AX,[1200H]
解:物理地址=(DS)×10H+1200H
(AX) = 4C2AH
(4) MOV AX,[BX]
解:物理地址=(DS)×10H+0100H=20100H
(AX)=3412H
(5) MOV AX,1100[BX]
解:物理地址=(DS)×10H+0100H+1100H=21200H
(AX)=4C2AH
5.
(1)01001001b+10011101b
解:
01001001
+ 10011101
————————
11100110 由此可得:SF=1 CF=0 ZF=0 OF = 0 计算结果有效
(2)01000001b-10101011b
解:
01000001
- 10101011
———————— => 01000001
+ 01010101
————————
10010110 由此可得:SF=1 CF=1 ZF=0 OF=1
减法计算中,被减数、减数符号相反,结果符号与减数相同,OF=1计算结果无效
6.有符号定义语句如下:
BUFF DB 1,2,3,’123’
EBUFF DB 0
L EQU EBUFF-BUFF
问L的值为多少?为什么?
解:根据数据段的定义,BUFF长度定义为6个字节,分别存放1,2,3,‘1’,‘2’,‘3’,而后紧接着为EBUFF的地址,故L值为6
程序题
1 MOV BL,64H
MOV CL,03H
XOR AX,AX
AGAIN:ADD AL,BL
ADC AH,0 DEC CL
JNZ AGAIN
问:(1)该程序段完成的功能是:
(2)AX=________。
2 已知数据段中定义
DAT1 DB 12H,34H,56H,78H
MOV CX,0
MOV AX,WORD PTR DAT1
MOV CL,DAT1+3
当程序段执行完后AX=________,CX=________。
3 DA1 DB 83H,72H,61H,94H,5AH
┇
MOV CX,WORD PTR DA1
AND CX,0FH
MOV AL,DA1+3
SHL AL,CL
上述指令序列执行后,AL=_______,CL=_______。
4、 某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!).试在空白处填上适当的一条指令。 STRING DB‘COMPUTER’,‘$’
MOV BX,0FFSET STRING
LOP:MOV DL,[BX]
MOV AH,02H
INT 21H
____________________
____________________
JNE LOP
答案:
1、AX=012CH,将AX内容乘3送BX中
2、AX=3412H,CX=0078H
3、AL=0A0H,CL=03H
4、INC BX
CMP [BX],24H
名词解释
1.机器语言
2.汇编语言
3.堆栈
4.物理地址 5.汇编程序
6.SP:
7.IP:
答案:
1、 机器语言:能被计算直接识别的恶语言;
2、 汇编语言:用指令的助记符、符号地址、标号等符号书写程序的语言;
3、 堆栈:以后进先出(或先进后出)方式工作的存储空间;
4、 物理地址:唯一代表存储空间中每个字节单元的地址;
5、 汇编程序:把汇编语言程序翻译成机器语言的系统程序。
6、 SP:保存当前栈顶地址的寄存器;
7、 IP:指示下一条要执行指令的地址的寄存器
编程题
1、试编制一程序段,用串操作指令实现以DA_BY为首址的20H个字节单元中存放相同字符‘Y’(设DA_BY存储区已有ES指向)。
2、试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为 奇数,则将进位位置1,否则进位位清0。
DATA SEGMENT
DA1 DW XXXX
DATA ENDS 3、已知在N到N+i的存储区内有一ASCII码字符串(共i+1个),试编写一个汇编语言程序,将此字符串传送到NI到NI+i单元中,并使字符串的顺序与原顺序相反。(只写出关键代码段即可)(6)
1、 编写程序,求解sum= 1001iai=a1+a2+„+a100,要求写出完整程序。(9)
2、 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。只写关键代码段即可(8)
3、 试编写一程序,比较两个字符串STRING1与STRING2所含有的字符是否完全相同,若相同则显示“MATCH”,如不同则显示“NO
MATCH”,字符串内容自定义,要求写出完整的程序。(12)
答案:1、 LEA DI,DA_BY
MOV CX,32
MOV AL,‘Y’
CLD
REP STOSB。
2、 CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX LEA SI,DA1
MOV CX,16
XOR BL,BL
AGAIN: MOV AL,[SI]
HL AL,1
JC NEXT
INC BL
NEXT:INC SI
LOOP AGAIN
TEST BL,01H
JNE L1
CLC
JMP DONE
L1: STC
DONE: MOV AH,4CH
INT 21H
CODE ENDS
END START
3、解:
LEA SI,N
LEA DI,NI
ADD DI,I MOV CX, I
ADD CX,1
MOVE:
CLD
LODSB
STD
STOSB
LOOP MOVE
4、解:
DATA SEGMENT
ARR DW a1, a2, a3, a4, a5, a6, „, a100
SUM DW ?
DATA ENDS
CODE SEGMENT
ASSUME DS: DATA, CS: CODE
START:
MOV AX, DATA
MOV DS, AX
LEA BX, ARR
MOV CX, 100
MOV AX, 0
AGAIN: