资源描述
第三章微机原理 习题课
精品资料
第三章 习题课
一、选择题
1、在汇编语言程序的开发过程中使用宏功能的顺序是(C )。
A、宏定义,宏调用 B、宏定义,宏展开
C、宏定义,宏调用,宏展开 D、宏定义,宏展开,宏调用
2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是( B )。
A、名字项 B、操作项 C、操作数项 D、注释项
3、下列叙述正确的是( C )
A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令
B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令
C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令
D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令
4、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有( D ).
A、CMP B、SUB C、AND D、MOV
5、测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是( B )。
A TEST BL,4FH
JZ NEXT
B XOR BL,4FH
JZ NEXT
C AND BL,4FH
JZ NEXT
D OR BL,4FH
JZ NEXT
6、检查BUF的内容是否为正偶数,如是正偶数,则令AL=0。下面程序段正确的是( C )。
仅供学习与交流,如有侵权请联系网站删除 谢谢11
A、MOV AL,BUF
JS K1
SHR AL,1
JNC K1
MOV AL,0
K1:……
B、MOV AL,BUF
AND AL,11
JNZ K2
MOV AL,0
K2:……
D、MOV AL,BUF
JNP K4
TEST AL,80H
JNZ K4
MOV AL,0
K4:……
C、MOV AL,BUF
TEST AL,81H
JNZ K3
MOV AL,0
K3:……
7、下列描述中,执行循环的次数最多的情况是( A )。
A.MOV CX,0 B.MOV CX,1
LOP:LOOP LOP LOP:LOOP LOP
C.MOV CX,0FFFFH D.MOV CX,256
LOP:LOOP LOP LOP:LOOP LOP
8、在下列指令中, D 指令的执行会影响条件码中的CF位。
A.JMP NEXT B.JC NEXT C.INC BX D.SHL AX,1
9、下列指令执行时出错的是(A)。
A.ADD BUF1,BUF2 B.JMP DWORD PTR DAT [BX]
C.MOV AX,[BX+DI] NUM D.TEST AL,08H
10、在下列指令的表示中,不正确的是(C)。
A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL
11、在进行二重循环程序设计时,下列描述正确的是(A)。
A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内
B.外循环初值应置外循环之内;内循环初值应置内循环之内
C.内、外循环初值都应置外循环之外
D.内、外循环初值都应置内循环之外,外循环之内
12、下面是多字节加法程序,第一个数是8A0BH,第二个数是D705H。
DATA SEGMENT
FIRST DB (1), (2),0H
SECOND DB (3), (4)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV CX, (5)
MOV SI,0
(6)
NEXT: MOV AL,SECOND[SI]
ADC FIRST[SI],AL
INC SI
LOOP NEXT
MOV AL,0
ADC AL, (7)
MOV FIRST[SI],AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
请选择正确的答案填入空格中:
(1)A)8AH B)0BH
C)D7H D)05H
(2)A)8AH B)0BH
C)D7H D)05H
(3)A)8AH B)0BH
C)D7H D)05H
(4)A)8AH B)0BH
C)D7H D)05H
(5)A)3 B)2
C)1 D)4
(6)A)CLC B)CLD
C)STC D)CLI
(7)A)1 B)-1
C)0 D)0FFH
二、填空题
1、指令JMP FAR PTR DONE属于(段间转移直接)寻址。
2、检查二个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令是(JC LOP1)
3、下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为( )。
TEST BH,01H
__JNE_K1
4、循环指令LOOPNZ终止循环的条件是( CX=0,或ZF=1 )。
5、条件转移指令JNE的测试条件为(ZF=0)。
6、执行如下程序:
MOV AX,0
MOV BX,1
MOV CX,100
A:ADD AX,BX
INC BX
LOOP A
HLT
执行后 (BX)= (101)。
上题的程序执行后(AX)= (5050)。
7、执行下面的程序段后,AL______。
BUF DW 2152H,3416H,5731H,4684H
MOV BX, OFFSET BUF
MOV AL, 3
XLAT
8、 是过程定义结束伪指令,其前面需要加 配套使用。 是段定义结束伪指令,其前面需要加 配套使用。
9、 设VALA EQU 200
VALB EQU 30
VALC EQU 1BH
下列表达式的值各为多少?
(2)(VALB AND 0FH)OR (VALB XOR 0FH)
(3)(VALA GE VALB )AND 0FH
三、程序阅读与设计
1、设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。
TEST AX,8000H
__JE K1或JZ K1_________
MOV PLW,BX
JMP DONE
K1:__MOV PLW,A___________
DONE:
2、
MOV DL,AL
NOT DL
TEST DL,04H
JE NEXT
┇
NEXT:…
若上述程序段执行时产生分支,说明AL中的数第 位一定为1?程序段执行后CF是 ?
第2位;CF=0
3、下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。试把空白处填上适当指令。
___ XOR AH,AL____
AND AH,08H
____ JE ZERO_____
MOV AH,OFFH
JMP NEXT
ZERO:MOV AH,0
NEXT:……
4、
AND AL,AL
JZ BRCH1
RCR AL,1
JZ BRCH2
RCL AL,1
INC AL
JZ BRCH3
: ......
上述程序运行后,试回答:
(1)当(AL)=__0________时,程序转向BRCH1
(2)当(AL)=__1________时,程序转向BRCH2
(3)当(AL)=__-1________时,程序转向BRCH3
5、下列语句在存储器中分别为变量分配多少字节空间?
VAR1 DB 10,2
VAR2 DW 5 DUP (?), 0
VAR3 DB ‘HOW ARE YOU?’,’$’
VAR4 DD -1, 1, 0
VAR1分配的字节空间为 字节;VAR2分配的空间为 字节;VAR3分配的空间为 字节,VAR4分配的空间为 字节。
6、以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。
BUF DB 5,6,7,58H,62,45H,127,……
COUNT EQU $-BUF
MAX DB?
┇
MOV BX,OFFSET BUF
MOV CX,____COUNT-1_
MOV AL,[BX]
LOP1:INC BX
____ CMP AL,[BX]_______ __
JAE NEXT
MOV AL,[BX]
NEXT:DEC CX
_____ JNZ LOP1___________
_____ MOV MAX,AL
7、请在图中正确填写执行这些伪指令后数据区的内容
STRING1 DB ‘ABCD’
STRING1
STRING2
STRING2 DW ‘ABCD’
8、读下面的程序并要求:
(1)在每条语句后给出作用释。
(2)画出程序流程图。
(3)回答该程序完成什么功能?
DSEG SEGMENT
NUM1 DW 500 DUP(?)
NUM2 DB 150 DUP(?)
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
MAIN PROC RAR
START: PUSH DS
XOR AX,AX
PUSH AX
MOV CX,64H
MOV BX,300
MOV SI,0
MOV DI,0
NEXT:MOV AL,BYTE PTR NUM1[BX][SI]
ADD AL,AL
MOV NUM2[DI],AL
INC DI
INC SI
LOOP NEXT
RET
MAIN ENDP
CSEG ENDS
END START
答:这个程序是将数据段中有效地址从NUM1+300开始的连续100个任意8位二进制数分别乘以2后,存放到数据段中有效地址从NUM2开始的连续100个字节单元。
9、程序中下列语句在编译后装入内存时,操作系统为每个变量分配多少字节存储单元? 前15个字节中的内容是什么?
ABC1 DW 0AH
XYZ1 DB 4 DUP(?)
STR1 DB “error a!”,“$”
STR2 DB “OK!”
ABC2 DD 1,2,8150H
答: ABC1 2字节, XYZ1 4字节, STR1 9字节, STR2 3字节, ABC2 12字节。
10.试用数据定义语句DB或DW改写下述两语句中的某一个,使它们在存储器中有完全相同的存储情况。
VAR1 DB ‘abcdefghij’
VAR2 DW 6162H,6364H,6566H,6768H,696AH
答:将第一个伪指令语句改写为VAR1 DW ‘ba’,‘dc’,‘fe’,‘hg’,‘ji’,第二个伪指令语句不变。或第一个伪指令语句不变,而将第二个伪指令语句改写为:
VAR2 DB 62H,61H, 64H,63H, 66H,65H, 68H,67H, 6AH ,69H
11、下面程序的功能是什么?
MOV CH,4
LAB:MOV CL,4
ROL BX,CL
MOV DL,BL
AND DL,0FH
ADD DL,30H
CMP DL,3AH
JL PRINT
ADD DL,7
PRINT:MOV AH,02
INT 21H
DEC CH
JNZ LAB
显示输出BX寄存器里的内容
12、阅读如下程序段,回答所提出的问题,假定X1,X2,XN为无符号数。
ORG 100H
BLOK DW X1,X2,…,XN
COUNT EQU($-BLOLOK)/2
RESULT DW COUNT,?
……
LEA BX,BLOK-2
MOV CX,RESULT
XOR AX,AX
GOON:ADD BX,2
CMP AX,[BX]
JAE NEXT
MOV AX,[BX]
NEXT:LOOP GOON
MOV RESULT+2,AX
程序段执行完,回答下述问题
RESULT+2字存储单元的内容=______
BX=______
程序循环次数=______
答: RESULT+2字存储单元的内容是MAX(X1, X2, … XN)
BX= 100H + 2×(COUNT-1)
程序循环次数= COUNT
13、某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!).试在空白处填上适当的一条指令。
STRING DB‘COMPUTER’,‘$’
┇
MOV BX,0FFSET STRING
LOP:MOV DL,[BX]
MOV AH,02H
INT 21H
_____ INC BX_______________
_____CMP [BX],24H________
JNE LOP
14、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
答: BEGIN:MOV AH,1
INT 21H
CMP AL,’a’
JB STOP
CMP AL,’z’
JA STOP
SUB AL,20H
MOV DL,AL
MOV AH,2
INT 21H
JMP BEGIN
STOP:RET
15、现有下列数据段:
DATA SEGMENT
STR1 DB‘ABCDEFGHIJKL'
COUNT EQU -STR1
BUF DB COUNT DUP(0)
DATA ENDS
下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。
MOV SI,OFFSET BUF-1
MOV DI,OFFSET BUF
MOV CX,COUNT
___CLD_或 STD_____
LOP:MOVSB
______ SUB SI,2__或____ ADD DI,2__
LOOP LOP
16、下述程序段完成计算2~20之间的偶数的和,并存于AX中。试把空白处填上适当的指令。
XOR AX,AX
MOV BX,0
MOV CX,10或MOV CX,0AH
CONT: ADD AX,BX
ADD BX,2
LOOP CONT
17、BEG为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。请在程序中的空格处填入适当的指令使其完整。
MOV CX,32H??
LEA SI,BEG
MOV DI,SI
(1)
DON:MOV AL,[SI]
(2)
MOV [SI],AL
(3)
DEC DI
LOOP DON
HLT
答: (1) ADD DI, 99
(2) XCHG AL, [DI]
(3) INC SI
18、FUNCTION MACRO P1,P2,P3
MOV AX,P1
P2 P3,1
ENDM
请回答下列问题:
⑴上面程序段中,MACRO和ENDM是一对伪指令,在 宏 定义中,它们成对出现。
⑵通过调用语句FUNCTION 100,SUB,AX调用之后,AX寄存器中的内容为 99 。
展开阅读全文