微机原理第4章习题与答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
变量通常指存放在存储单元中的值,在程序的运行中是可以修改的。所有的变量都具有3个属性。
(1)段属性:指变量所在段的段基址,此值必须在一个段寄存器中。
(2)偏移属性:指变量所在地址与所在段的段首地址之间的地址偏移字节数。
(3)类型属性:指变量中每个元素所包含的字节数。
标号是可执行指令语句的地址的符号表示,它可作为转移指令和调用指令CALL的目标操作数,以确定程序转向的目标地址,它也具有3个属性:
INT 21H
MOV AH, _____;系统返回DOS
INT 21H
答案:0AH BUFFER+1 [BX] '$'或24H 9 4CH
三、问答题
1.变量和标号有哪些属性?它们的区别是什么?
答案:变量、标号还有常量是汇编语言中使用的操作数,是3种基本的数据项。变量和标号都有段属性、偏移属性和类型属性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
DATA ENDS
(2)内存分配:
DS:1060H
G1
20H
FFH
VAR1 DB 2,3,4
ORG $+3
VAR2 DW 1234H
DATA ENDS
A.02HB.04HC.05HD.08H
答案:D
3.为了使MOV AX, VAR指令执行后,AX寄存器中的内容为4142H,下面哪一种数据定义会产生不正确的结果?
A.VAR DW 4142HB.VAR DW 16706C.VAR DB 42H, 41HD.VAR DW ‘AB’
MOV DX, OFFSET BUFFER
MOV AH, _______
INT 21H;读入字符串
LEA DX, ______
MOV AL, ______;实际读入的字符串的字符个数
MOV AH, 0
ADD BX, AX
MOVAL, ____
MOV [BX+1], AL
MOV AH, _____
INC DX;确定显示字符串的首址
DATA SEGMENT
MAX EQU 0FFFH
VAL1 EQU MAX MOD 10H
VAL2 EQU VAL1*2
BUFF DB 1,2,3,'123'
EBUFF DB ?
LEND EQU EBUFF-BUFF
DATA ENDS
答案:
MAX=0FFFH VAL1=000FH VAL2=001EH LEND 6
MOVFIRST[SI],AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
答案:0BH8AH05HD7H2CLC0
8.下面程序的功能是求有符号数中绝对值最小的数,并将最小绝对值存放在DAT2字节中,填空使程序正确实现此功能。程序执行后,DAT2单元中的内容是______。
DATA SEGMENT
ADW‘EF’
BDB‘ABCDEF’
MOVAX,A
MOVBL,B[3]
HLT
答案:4546H44H
3.执行下面程序段后,AL中的内容是______。
BUFDW1234H, 5678H, 0001H
MOVBX,OFFSETBUF
MOVAL,2
XLAT
答案:78H
4.若符号定义语句如下,则L=_______。
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.以下程序的执行结果是_______。
ADB‘1234’
习题
一、选择题
1.下列描述正确的是_______。
A.汇编语言源程序可直接运行
B.汇编语言属于低级语言
C.汇编程序是用汇编语言编写的程序,运行速度高,阅读方便,属于面向用户的程序语言。
D.汇编语言可以移植
答案:B
2.分析下面的程序,变量VAR2的偏移地址是______。
DATA SEGMENT
ORG 2
答案:3000H 0034H 4567H 2FF8H 2FFEH
10.完善程序。BUFFER单元开始放置一个数据块,BUFFER单元存放预计数据块的长度为20H,BUFFER+1单元存放的是实际从键盘输入的字符串的长度,从BUFFER+2开始存放的是从键盘接收的字符,请将这些从键盘接收的字符再在屏幕上显示出来。
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
MOVSI,LENGTHTABLE3; (SI)=_______
答案:1 2 20 40 1
7.下面是多字节加法程序,第一个数是8A0BH,第二个数是D705H。请填写出正确结果。
DATASEGNEBT
FIRSTDB_____, _____, 0H
SECONDDB_____,______
DATAENDS
6.现有程序如下:
DATA SEGMENT
A DB 23
B DB 0F0H
C DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS: DATA
START:MOV AX, DATA
MOV DS, AX
MOV AL, A
CMP பைடு நூலகம்L, B
JZ LP0
NEG AL
LP0:MOV DAT2, AL
LP1:_________
MOV BL, [SI]
TEST BL, 80H
JZ LP2
NEG BL
LP2:________
JB LP3
MOV DAT2, BL
MOV AL, BL
LP3:________
MOV AH, 4CH
INT 21H
CODE ENDS
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
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
CODESEGMENT
ASSUMECS:CODE, DS: DATA
START:MOVAX,DATA
MOVDS,AX
MOVCX,_____
MOVSI,0
_________
NEXT:MOVAL,SECOND[SI]
ADCFIRST[SI],AL
INCSI
LOOPNEXT
MOVAL,0
ADCAL,______
(5)转移指令必须转移到指令上,不允许转移到数据变量上。
3.一数据段如下:
DATA SEGMENTPARA'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
FF DD 12345H
DATA 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
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
TABLE1DB?
TABLE2DW20 DUP(?)
TABLE3DB‘ABCD’
......
MOVAX,TYPE TABLE1;(AX)=___
MOVBX,TYPETABLE2;(BX)=____
MOVCX,LENGTHTABLE2; (CX)=_____
MOVDX,SIZETABLE2;(DX)=_____
MOV BX, F1
答案:
(1)
DATA 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
(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撤消
HLT
A.10HB.12HC.0EHD.0FH
答案:B
二、填空题
1.汇编语言的调试过程如下:建立以______为扩展名的源文件;生成以______为扩展名的目标文件;生成以______为扩展名的可执行文件;使用DEBUG调试程序,调试可执行目标程序。
答案:.asm .obj .exe
2.执行下列指令后,(AX)=______,(BL)=_______。
(1)段属性:指标号所在段的段基址。标号的段是它所出现的那个代码段,由CS指示。
(2)偏移属性:指标号所在地址与所在段的段首地址之间的地址偏移字节数。
(3)类型属性:标号的类型属性指在转移指令中标号可转移的距离,也称距离属性。NEAR和FAR
2.指出下列伪指令语句中的错误:
(1) DATA DB 395
DAT1DB65H, 88H, 20H, 0F6H
NEQU $-DAT1
DAT2DB ?
DATAENDS
CODESEGMENT
_________________
START:MOV AX, DATA
__________
LEA SI, DAT1
MOV CX, N-1
MOV AL, [SI]
TEST AL, 80H
ENDSTART
答案:
ASSUME DS:DATA, SS:STACK, CS:CODE
MOV DS, AX
INC SI
CMP DAT2, BL
LOOP LP1
DAT2单元中的内容:0AH
9.填空说明在下列程序段执行过程中相应寄存器中的值。假设程序执行前DS=3000H,SS=2000H,SP=3000H,AX=4567H,BX=1234H,CX=6789H。
BUF1DB1, 2, ‘12’
BUF2DB0
LEQUBUF2-BUF1
答案:4
5.执行下列程序段后,BX寄存器间址单元的内容是______。
ORG1FFFH
DB4FH, 50H, 51H
MOVBX,1FFFH
INC[BX]
INCBX
DEC[BX]
答案:4FH
6.对于下面的数据定义,各条MOV指令单独执行后,请填充有关寄存器的内容:
答案:C
4.下列伪指令中______是正确的。
A.ERR1:DW 99B.ERR2 DB 25*60C.COUNT EQU 20D.ONEDBONE
答案:C
5.执行下列指令后,寄存器CL的值是_______。
STR1DW‘AB’
STR2DB16DUP(?)
CNTEQU$-STR1
MOVCX,CNT
MOVAX,STR1
BDW5 DUP(2,3 DUP(0))
CDW‘AB’,’C’,’D’
L1:MOVAL,TYPE B
MOVBL,LENGTHB
MOVAH,SIZE A
MOVBH,SIZE C
MOVCL,TYPEL1
MOVCH,SIZEB
答案:AX=0102H,BX=0205HCX=0AFFH
5.有下列数据段,写出数据段中MAX、VAL1、VAL2、LEND符号所对应的值。
(1)段属性:指变量所在段的段基址,此值必须在一个段寄存器中。
(2)偏移属性:指变量所在地址与所在段的段首地址之间的地址偏移字节数。
(3)类型属性:指变量中每个元素所包含的字节数。
标号是可执行指令语句的地址的符号表示,它可作为转移指令和调用指令CALL的目标操作数,以确定程序转向的目标地址,它也具有3个属性:
INT 21H
MOV AH, _____;系统返回DOS
INT 21H
答案:0AH BUFFER+1 [BX] '$'或24H 9 4CH
三、问答题
1.变量和标号有哪些属性?它们的区别是什么?
答案:变量、标号还有常量是汇编语言中使用的操作数,是3种基本的数据项。变量和标号都有段属性、偏移属性和类型属性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
DATA ENDS
(2)内存分配:
DS:1060H
G1
20H
FFH
VAR1 DB 2,3,4
ORG $+3
VAR2 DW 1234H
DATA ENDS
A.02HB.04HC.05HD.08H
答案:D
3.为了使MOV AX, VAR指令执行后,AX寄存器中的内容为4142H,下面哪一种数据定义会产生不正确的结果?
A.VAR DW 4142HB.VAR DW 16706C.VAR DB 42H, 41HD.VAR DW ‘AB’
MOV DX, OFFSET BUFFER
MOV AH, _______
INT 21H;读入字符串
LEA DX, ______
MOV AL, ______;实际读入的字符串的字符个数
MOV AH, 0
ADD BX, AX
MOVAL, ____
MOV [BX+1], AL
MOV AH, _____
INC DX;确定显示字符串的首址
DATA SEGMENT
MAX EQU 0FFFH
VAL1 EQU MAX MOD 10H
VAL2 EQU VAL1*2
BUFF DB 1,2,3,'123'
EBUFF DB ?
LEND EQU EBUFF-BUFF
DATA ENDS
答案:
MAX=0FFFH VAL1=000FH VAL2=001EH LEND 6
MOVFIRST[SI],AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
答案:0BH8AH05HD7H2CLC0
8.下面程序的功能是求有符号数中绝对值最小的数,并将最小绝对值存放在DAT2字节中,填空使程序正确实现此功能。程序执行后,DAT2单元中的内容是______。
DATA SEGMENT
ADW‘EF’
BDB‘ABCDEF’
MOVAX,A
MOVBL,B[3]
HLT
答案:4546H44H
3.执行下面程序段后,AL中的内容是______。
BUFDW1234H, 5678H, 0001H
MOVBX,OFFSETBUF
MOVAL,2
XLAT
答案:78H
4.若符号定义语句如下,则L=_______。
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.以下程序的执行结果是_______。
ADB‘1234’
习题
一、选择题
1.下列描述正确的是_______。
A.汇编语言源程序可直接运行
B.汇编语言属于低级语言
C.汇编程序是用汇编语言编写的程序,运行速度高,阅读方便,属于面向用户的程序语言。
D.汇编语言可以移植
答案:B
2.分析下面的程序,变量VAR2的偏移地址是______。
DATA SEGMENT
ORG 2
答案:3000H 0034H 4567H 2FF8H 2FFEH
10.完善程序。BUFFER单元开始放置一个数据块,BUFFER单元存放预计数据块的长度为20H,BUFFER+1单元存放的是实际从键盘输入的字符串的长度,从BUFFER+2开始存放的是从键盘接收的字符,请将这些从键盘接收的字符再在屏幕上显示出来。
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
MOVSI,LENGTHTABLE3; (SI)=_______
答案:1 2 20 40 1
7.下面是多字节加法程序,第一个数是8A0BH,第二个数是D705H。请填写出正确结果。
DATASEGNEBT
FIRSTDB_____, _____, 0H
SECONDDB_____,______
DATAENDS
6.现有程序如下:
DATA SEGMENT
A DB 23
B DB 0F0H
C DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS: DATA
START:MOV AX, DATA
MOV DS, AX
MOV AL, A
CMP பைடு நூலகம்L, B
JZ LP0
NEG AL
LP0:MOV DAT2, AL
LP1:_________
MOV BL, [SI]
TEST BL, 80H
JZ LP2
NEG BL
LP2:________
JB LP3
MOV DAT2, BL
MOV AL, BL
LP3:________
MOV AH, 4CH
INT 21H
CODE ENDS
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
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
CODESEGMENT
ASSUMECS:CODE, DS: DATA
START:MOVAX,DATA
MOVDS,AX
MOVCX,_____
MOVSI,0
_________
NEXT:MOVAL,SECOND[SI]
ADCFIRST[SI],AL
INCSI
LOOPNEXT
MOVAL,0
ADCAL,______
(5)转移指令必须转移到指令上,不允许转移到数据变量上。
3.一数据段如下:
DATA SEGMENTPARA'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
FF DD 12345H
DATA 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
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
TABLE1DB?
TABLE2DW20 DUP(?)
TABLE3DB‘ABCD’
......
MOVAX,TYPE TABLE1;(AX)=___
MOVBX,TYPETABLE2;(BX)=____
MOVCX,LENGTHTABLE2; (CX)=_____
MOVDX,SIZETABLE2;(DX)=_____
MOV BX, F1
答案:
(1)
DATA 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
(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撤消
HLT
A.10HB.12HC.0EHD.0FH
答案:B
二、填空题
1.汇编语言的调试过程如下:建立以______为扩展名的源文件;生成以______为扩展名的目标文件;生成以______为扩展名的可执行文件;使用DEBUG调试程序,调试可执行目标程序。
答案:.asm .obj .exe
2.执行下列指令后,(AX)=______,(BL)=_______。
(1)段属性:指标号所在段的段基址。标号的段是它所出现的那个代码段,由CS指示。
(2)偏移属性:指标号所在地址与所在段的段首地址之间的地址偏移字节数。
(3)类型属性:标号的类型属性指在转移指令中标号可转移的距离,也称距离属性。NEAR和FAR
2.指出下列伪指令语句中的错误:
(1) DATA DB 395
DAT1DB65H, 88H, 20H, 0F6H
NEQU $-DAT1
DAT2DB ?
DATAENDS
CODESEGMENT
_________________
START:MOV AX, DATA
__________
LEA SI, DAT1
MOV CX, N-1
MOV AL, [SI]
TEST AL, 80H
ENDSTART
答案:
ASSUME DS:DATA, SS:STACK, CS:CODE
MOV DS, AX
INC SI
CMP DAT2, BL
LOOP LP1
DAT2单元中的内容:0AH
9.填空说明在下列程序段执行过程中相应寄存器中的值。假设程序执行前DS=3000H,SS=2000H,SP=3000H,AX=4567H,BX=1234H,CX=6789H。
BUF1DB1, 2, ‘12’
BUF2DB0
LEQUBUF2-BUF1
答案:4
5.执行下列程序段后,BX寄存器间址单元的内容是______。
ORG1FFFH
DB4FH, 50H, 51H
MOVBX,1FFFH
INC[BX]
INCBX
DEC[BX]
答案:4FH
6.对于下面的数据定义,各条MOV指令单独执行后,请填充有关寄存器的内容:
答案:C
4.下列伪指令中______是正确的。
A.ERR1:DW 99B.ERR2 DB 25*60C.COUNT EQU 20D.ONEDBONE
答案:C
5.执行下列指令后,寄存器CL的值是_______。
STR1DW‘AB’
STR2DB16DUP(?)
CNTEQU$-STR1
MOVCX,CNT
MOVAX,STR1
BDW5 DUP(2,3 DUP(0))
CDW‘AB’,’C’,’D’
L1:MOVAL,TYPE B
MOVBL,LENGTHB
MOVAH,SIZE A
MOVBH,SIZE C
MOVCL,TYPEL1
MOVCH,SIZEB
答案:AX=0102H,BX=0205HCX=0AFFH
5.有下列数据段,写出数据段中MAX、VAL1、VAL2、LEND符号所对应的值。