微机原理各章习题答案4(朱红_著)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章习题
一、选择题
1.下列描述正确的是_______。
A.汇编语言源程序可直接运行
B.汇编语言属于低级语言
C.汇编程序是用汇编语言编写的程序,运行速度高,阅读方便,属于面向用户的程序语言。
D.汇编语言可以移植
答案:B
2. 分析下面的程序,变量V AR2的偏移地址是______。
DA TA SEGMENT
ORG 2
V AR1 DB 2,3,4
ORG $+3
V AR2 DW 1234H
DA TA ENDS
A.02H
B.04H
C.05H
D.08H
答案:D
3.为了使MOV AX, V AR指令执行后,AX寄存器中的内容为4142H,下面哪一种数据定义会产生不正确的结果?
A.V AR DW 4142H
B.V AR DW 16706
C.V AR DB 42H, 41H
D.V AR DW ‘AB’
答案:C
4.下列伪指令中______是正确的。
A.ERR1:DW 99
B.ERR2 DB 25*60
C.COUNT EQU 20
D.ONE DB ONE
答案:C
5.执行下列指令后,寄存器CL的值是_______。
STR1 DW ‘AB’
STR2 DB 16 DUP(?)
CNT EQU $-STR1
MOV CX, CNT
MOV AX, STR1
HLT
A.10H
B.12H
C.0EH
D.0FH
答案:B
二、填空题
1.汇编语言的调试过程如下:建立以______为扩展名的源文件;生成以______为扩展名的目标文件;生成以______为扩展名的可执行文件;使用DEBUG调试程序,调试可执行目标程序。
答案:.asm .obj .exe
2.执行下列指令后,(AX)=______,(BL)=_______。
A DW ‘EF’
B DB ‘ABCDEF’
MOV AX, A
MOV BL, B[3]
HLT
答案:4546H 44H
3.执行下面程序段后,AL中的内容是______。
BUF DW 1234H, 5678H, 0001H
MOV BX, OFFSET BUF
MOV AL, 2
XLAT
答案:78H
4.若符号定义语句如下,则L=_______。
BUF1 DB 1, 2, ‘12’
BUF2 DB 0
L EQU BUF2-BUF1
答案:4
5.执行下列程序段后,BX寄存器间址单元的内容是______。
ORG 1FFFH
DB 4FH, 50H, 51H
MOV BX, 1FFFH
INC [BX]
INC BX
DEC [BX]
答案:4FH
6.对于下面的数据定义,各条MOV指令单独执行后,请填充有关寄存器的内容:TABLE1 DB ?
TABLE2 DW 20 DUP(?)
TABLE3 DB ‘ABCD’
......
MOV AX, TYPE TABLE1; (AX)=___
MOV BX, TYPE TABLE2; (BX)=____
MOV CX, LENGTH TABLE2; (CX)=_____
MOV DX, SIZE TABLE2 ; (DX)=_____
MOV SI, LENGTH TABLE3; (SI)=_______
答案:1 2 20 40 1
7.下面是多字节加法程序,第一个数是8A0BH,第二个数是D705H。
请填写出正确结果。
DA TA SEGNEBT
FIRST DB _____, _____, 0H
SECOND DB _____,______
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS: DA TA
START: MOV AX, DATA
MOV DS, AX
MOV CX, _____
MOV SI, 0
_________
NEXT: MOV AL, SECOND[SI]
ADC FIRST[SI], AL
INC SI
LOOP NEXT
MOV AL, 0
ADC AL, ______
MOV FIRST[SI], AL
MOV AH, 4CH
INT 21H
CODE ENDS
END START
答案:0BH 8AH 05H D7H 2 CLC 0
8.下面程序的功能是求有符号数中绝对值最小的数,并将最小绝对值存放在DA T2字节中,填空使程序正确实现此功能。
程序执行后,DA T2单元中的内容是______。
DA TA SEGMENT
DA T1 DB 65H, 88H, 20H, 0F6H
N EQU $-DA T1
DA T2 DB ?
DA TA ENDS
CODE SEGMENT
_________________
START: MOV AX, DATA
__________
LEA SI, DA T1
MOV CX, N-1
MOV AL, [SI]
TEST AL, 80H
JZ LP0
NEG AL
LP0: MOV DA T2, AL
LP1: _________
MOV BL, [SI]
TEST BL, 80H
JZ LP2
NEG BL
LP2: ________
JB LP3
MOV DA T2, BL
MOV AL, BL
LP3: ________
MOV AH, 4CH
INT 21H
CODE ENDS
END START
答案:
ASSUME DS:DATA, SS:STACK, CS:CODE
MOV DS, AX
INC SI
CMP DAT2, BL
LOOP LP1
DA T2单元中的内容:0AH
9.填空说明在下列程序段执行过程中相应寄存器中的值。
假设程序执行前DS=3000H,SS=2000H,SP=3000H,AX=4567H,BX=1234H,CX=6789H。
AND BX, 00FFH
CALL MYSUB
NOP ;SP=________
;AX=_______
;BX=_______
HLT
MYSUB PROC
PUSH AX
PUSH BX
PUSH CX
SUB AX, BX ;SP=______
POP CX
POP AX
POP BX
NOP ;SP=______
RET
MYSUB ENDP
答案:3000H 0034H 4567H 2FF8H 2FFEH
10.完善程序。
BUFFER单元开始放置一个数据块,BUFFER单元存放预计数据块的长度为20H,BUFFER+1单元存放的是实际从键盘输入的字符串的长度,从BUFFER+2开始存放的是从键盘接收的字符,请将这些从键盘接收的字符再在屏幕上显示出来。
MOV DX, OFFSET BUFFER
MOV AH, _______
INT 21H ;读入字符串
LEA DX, ______
MOV AL, ______ ;实际读入的字符串的字符个数
MOV AH, 0
ADD BX, AX
MOV AL, ____
MOV [BX+1], AL
MOV AH, _____
INC DX ;确定显示字符串的首址
INT 21H
MOV AH, _____ ;系统返回DOS
INT 21H
答案:0AH BUFFER+1 [BX] '$'或24H 9 4CH
三、问答题
1.变量和标号有哪些属性?它们的区别是什么?
答案:变量、标号还有常量是汇编语言中使用的操作数,是3种基本的数据项。
变量和标号都有段属性、偏移属性和类型属性3种属性,但含义不同。
变量通常指存放在存储单元中的值,在程序的运行中是可以修改的。
所有的变量都具有3个属性。
(1)段属性:指变量所在段的段基址,此值必须在一个段寄存器中。
(2)偏移属性:指变量所在地址与所在段的段首地址之间的地址偏移字节数。
(3)类型属性:指变量中每个元素所包含的字节数。
标号是可执行指令语句的地址的符号表示,它可作为转移指令和调用指令CALL的目标操作数,以确定程序转向的目标地址,它也具有3个属性:
(1)段属性:指标号所在段的段基址。
标号的段是它所出现的那个代码段,由CS指示。
(2)偏移属性:指标号所在地址与所在段的段首地址之间的地址偏移字节数。
(3)类型属性:标号的类型属性指在转移指令中标号可转移的距离,也称距离属性。
NEAR 和FAR
2.指出下列伪指令语句中的错误:
(1) DATA DB 395
(2)PRGM SEG
……
PRGM ENDS
(3)ALPHA EQU BETA
(4) COUNT EQU 100
COUNT EQU 65
(5) GOON DW 10DUP(?)
……
JMP GOON
答案:
(1)字节变量,范围在0~255
(2)定义段的伪指令为SEGMENT
(3)BETA必须先定义
(4)EQU不能重复定义,在下一次定义前必须用PURGE撤消
(5)转移指令必须转移到指令上,不允许转移到数据变量上。
3.一数据段如下:
DA TA SEGMENT PARA 'DATA' AT 46H
QA EQU 255
QA1=QA GT 3000
QA2=0FFFH
QA3 EQU QA2 XOR 255
QA4=88 MOD 5
QA5=88H SHR 2
QA6 EQU QA3/16+15
ORG 1060H
G1 DB 32, QA, 98/2, NOT 25
G2 DW 0FF6H, OFFSET G2
G3 DW 3DUP(5)
G4 DW SEG G1
SA EQU LENGTH G3
SB EQU SIZE G3
SC=TYPE G3
ORG 1200H
F1 EQU THIS WORD
F2 DB 11H, 22H, 33H, 44H
FF DD 12345H
DA TA ENDS
(1)写出每个符号所对应的值
(2)画出内存分配图
(3)执行下列指令后,对应的寄存器的值为多少
MOV AX, WORE PTR FF
AND AX, 0FFH
MOV BX, WORD PTR G1
MOV BX, 255 AND 0FH
ADD AX, OFFSET F2
MOV BX, F1
答案:
(1)
DA TA SEGMENT PARA 'DATA' AT 46H
QA EQU 255 ;QA=255
QA1=QA GT 3000 ;255大于3000,命题假,QA1=0 QA2=0FFFH ;QA2=0FFFH
QA3 EQU QA2 XOR 255 ;QA3=0FFFH⊕0FFH=0F00H
QA4=88 MOD 5 ;QA4=3
QA5=88H SHR 2 ;QA5=22H
QA6 EQU QA3/16+15 ;QA6=10FH
ORG 1060H
G1 DB 32, QA, 98/2, NOT 25
G2 DW 0FF6H, OFFSET G2
G3 DW 3DUP(5)
G4 DW SEG G1
SA EQU LENGTH G3 ;SA=3
SB EQU SIZE G3 ;SB=3×2=6
SC=TYPE G3 ;SC=2
ORG 1200H
F1 EQU THIS WORD ;F1的偏移地址为1200H,类型为字
F2 DB 11H, 22H, 33H, 44H
FF DD 12345H
DA TA ENDS
(2)内存分配:
DS:1060H G1 20H
FFH
31H
E6H
DS:1064H G2 F6H
0FH
64H
10H
DS:1068H G3 05H
00H
05H
00H
05H
00H
DS:106EH G4 46H
00H
…………
DS:1200H F2 11H
22H
33H
44H
DS:1204H FF 45H
23H
01H
00H (3)存储器的值:
MOV AX, WORE PTR FF ;AX=2345H
AND AX, 0FFH ;AX=0045H
MOV BX, WORD PTR G1 ;BX=0FF20H MOV BX, 255 AND 0FH ;BX=000FH
ADD AX, OFFSET F2 ;AX=1245H
MOV BX, F1 ;BX=2211H
4.以下程序的执行结果是_______。
A D
B ‘1234’
B DW 5 DUP(2,3 DUP(0))
C DW ‘AB’,’C’,’D’
L1: MOV AL, TYPE B
MOV BL, LENGTH B
MOV AH, SIZE A
MOV BH, SIZE C
MOV CL, TYPE L1 MOV CH, SIZE B 答案:AX=0102H, BX=0205H CX=0AFFH
5.有下列数据段,写出数据段中MAX 、V AL1、V AL2、LEND 符号所对应的值。
DA TA SEGMENT MAX EQU 0FFFH
V AL1 EQU MAX MOD 10H V AL2 EQU V AL1*2 BUFF DB 1,2,3,'123' EBUFF DB ?
LEND EQU EBUFF-BUFF DA TA ENDS 答案:
MAX=0FFFH V AL1=000FH V AL2=001EH LEND 6 6.现有程序如下: DA TA SEGMENT A DB 23 B DB 0F0H C DB 0 DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS: DATA START: MOV AX, DA TA MOV DS, AX MOV AL, A CMP AL, B JZ L JG M MOV C, -1 JMP EXIT L: MOV C, 0 JMP EXIT M: MOV C, 1
EXIT: MOV AH, 4CH INT 21H CODE ENDS END START
请回答:(1)该程序完成什么功能?(2)程序运行完后,C 中的内容是什么?
答案:判断两个有符号数,若A=B ,则C=0;若A>B ,则C=1;若A<B ,则C=-1。
C=1。
7.设有无符号数X ,Y ,编写求Y X Z -=的程序。
已知X 为1234H ,Y 为5678H ,X 、Y 、Z 均为存放于数据段的字变量。
答案:
DA TA SEGMENT
X DW 1234H
Y DW 5678H
Z DW 0
DA TA ENDS
STACK SEGMENT STACK
ST1 DW 64 DUP(?)
TOP EQU $-ST1
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK START: MOV AX, DA TA
MOV DS,AX
MOV AX, STACK
MOV SS, AX
MOV SP, TOP
MOV AX, X
SUB AX, Y
JNC NEXT
NEG AX
NEXT: MOV Z, AX
MOV AH, 4CH
INT 21H
CODE ENDS
END START
8.阅读下列程序,回答下列问题:
(1)程序执行后,RESULT单元的内容为多少?
(2)程序完成的功能是什么?
(3)该程序所占的数据区为多少个字节?
DA TA SEGMENT
FEN DB 85, -90, 64, -120, 95, 77, 88, 120, 60, 83 COUNT EQU $-FEN
RESULT DB ?
DA TA ENDS
STACK SEGMENT PARA STACK
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DATA:DATA, SS:STACK START: MOV AX,DA TA
MOV DS, AX
MOV SI, OFFSET FEN
MOV CX, COUNT
DEC CX
MOV AL, [SI]
MOV RESULT ,AL
TEST AL, 80H
JZ LOP
NEG AL
LOP: INC SI
MOV BL, [SI]
TEST BL, 80H
JZ NEXT
NEG BL
NEXT: CMP AL, BL
JAE NEXT1
MOV AL, BL
MOV BL, [SI]
MOV RESULT , BL
NEXT1: LOOP LOP
NOP
MOV AH, 4CH
INT 21H
CODE ENDS
END START
答案:(1) -120
(2)将绝对值最大的数放入RESULT单元中
(3)11字节
9.定理:从1开始的连续n个奇数之和等于n2,如1+3+5=32=9。
设:在数据区有字节变量N (0≤N≤255)。
试按此定理编写程序求N2并将结果存放于字变量RESULT中。
答案:
STACK SEGMENT PARA STACK
DW 100 DUP(?)
STACK ENDS
DA TA SEGMENT
N DB 5
RESULT DW ?
DA TA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS:DATA, SS:STACK
START: MOV AX, DA TA
MOV DS, AX
MOV AH, 0
MOV AL, N
MOV CX, AX
MOV BX, 0
MOV DX, 1
LOOP1: ADD BX, DX
ADD DX, 2
LOOP LOOP1
MOV RESULT, BX
MOV AH, 4CH
INT 21H
CODE ENDS
END START。