汇编语⾔程序设计习题-答案
4.1 分析执⾏下列指令序列后的结果:
1)MOV AX,1234H
MOV BX,00FFH
AND AX,BX
【答】(AX)=0034H
2)MOV AL,01010101B
AND AL,00011111B ;(AL)=00010101B
OR AL,11000000B ;(AL)=11010101B
XOR AL,00001111B ;(AL)=11011010B
NOT AL
【答】(AL)=00100101B
3)MOV DL,05H
MOV AX,0A00H
MOV DS,AX
MOV SI,0H
MOV CX,0FH
AGAIN: INC SI
CMP [SI],DL
LOOPNE A GAIN
HLT
本程序实现了什么功能?
【答】在以0A001H开始的15个单元中查05H。
4)MOV AX,DSEGADDR
MOV DS, AX
MOV ES,AX
MOV SI, OFFSET B1ADDR
MOV DI,OFFSET B2ADDR
MOV CX,N
CLD
REP MOVSB
HLT
本程序实现了什么功能?
【答】将B1ADDR中N个字节数据传送到B2ADDR开始的15个存储单元。5)MOV AX, 0H
MOV DS,AX
MOV ES, AX
MOV AL,05H
MOV DI,0A000H
MOV CX,0FH
CLD
AGAIN: SCASB
LOOPNE AGAIN
HLT
本程序实现了什么功能?
【答】从地址0A000H开始的15个单元中查字节型数据05H,⽤条件循环LOOPNZ,控制数据05H的查。
4.2 阅读程序:
1). CLD
LEA DI,[0100H]
MOV CX, 0080H
XOR AX, AX
REP STOSW
本程序实现了什么功能?
【答】将DS中起始地址为0100H的128个字节单元清零。
2). MOV AL, 08H
SAL AL,01H ;(AL)=00010000H
MOV BL, AL
MOV CL ,02H
SAL AL,CL ;(AL)=01000000H
ADD AL,BL ;(AL)=01010000H
本程序实现了什么功能?
【答】将AL中的内容乘以10。
4.3 试分析下列程序完成什么功能?
MOV DX,3F08H
a的ascii的编码是多少MOV AH,0A2H
MOV CL,4
SHL DX,CL ;(DX)=F080H
MOV BL,AH
SHL BL,CL ;(BL)=20H
SHR BL,CL ;(BL)=02H
OR DL,BL ;(DL)=82H
【答】将DX中的低4位数据8H分离出来,将AH中的低4位数据2H分离出来,合并为82H 存放在DL。
4.4 已知程序段如下:
MOV AX,1234H
MOV CL,4
ROL AX,CL
DEC AX
MOV CX,4
MUL CX
试问:(1)每条指令执⾏后,AX寄存器的内容是什么?(2)每条指令执⾏后,CF,SF 及ZF的值分别是什么?(3)程序运⾏结束时,AX及DX寄存器的值为多少?
【答】MOV AX,1234H ; (AX)=1234H, CF=SF=ZF=0
MOV CL,4
ROL AX,CL ; (AX)=2341H ,CF=1,SF=ZF=0
DEC AX ; (AX)=2340H, CF=1,SF=ZF=0
MOV CX,4 ;
MUL CX ;(AX)= 8000H ,CF=ZF=0,SF=1,DX=0
4.5 试分析下列程序段:
ADD AX,BX
JNC L2
SUB AX,BX
JNC L3
JMP SHORTL5
如果AX、BX的内容给定如下:
AX BX
(1)14C6H 80DCH (程序转向L2)
(2)B568H 54B7H (程序转向SHORTL5 )
问该程序在上述情况下执⾏后,程序转向何处?
【答】(1) 程序转向L2。
(2) 程序转向SHORTL5。
4.6 以下为某个数据段,试问各个变量分别占多少字节,该数据段共占多少字节?
DATA SEGMENT
VAR1 DW 9 ;2字节
VAR2 DD 10 DUP(?),2 ;44字节
VAR3 DB 2 DUP(?,10 DUP(?)) ;22字节
VAR4 DB ‘HOW ARE YOU' ;11字节
【答】该数据段共占79字节。
4.7 下列语句在存储器中分别为变量分配多少字节空间?并画出存储空间的分配图。
VAR1 DB 10,2 ;2字节
VAR2 DW 5DUP(?),0 ;12字节
VAR3 DB ‘HOW ARE YOU?',‘$' ;13字节
;2字节
4.8 编写⼀段程序,⽐较两个5字节的字符串OLDS和NEWS,若相同,在RESULT置0,否则置0FFH。【答】参考程序:
OLDS DB 1,2,3,4,5
NEWS DB 1,2,3,4,5
RESULT DB ?
MOV SI,OFFSET OLDS
MOV DI,OFFSET NEWS
MOV CX,10
CLD
REP CMPSB
JNZ NOEQU ;串不相等转
MOV AL,0
JMP OUTPT
NOEQU: MOV AL,0FFH
OUTPT: MOV RESULT,AL
STOP: JMP STOP
4.9 编程求和Y=A1 + A2 + …. + A100 。其中Ai为字节变量。
【答】参考程序:
DATA SEGMENT
TABLE DW 12,3,45,..
YAH DW ?
DATA ENDS
……….
MIAN PROC FAR
PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DATA
MOV DS, AX
MOV DX,0
XOR AX, AX ;清AX
MOV BX, OFFSET TABLE
MOV CX, 4
CLC
LP: ADD AX, [BX] ;求和
JNC DON
INC DX
CLC
DON: INC BX
INC BX ;指向下⼀个数
LOOP LP ;未加完,继续
MOV YAL,AX ;存和
MOV YAH,DX
MAIN ENDP
CODE ENDS
END START
4.10 内存中以FIRST和SECOND开始的单元中分别存放着两个16位组合的⼗进制(BCD码)数,低位在前。编程序求这两个数的组合的⼗进制和,并存到以THIRD开始的单元。
【答】参考程序:1325+9839=?
DATA SEGMENT
FIRST DB 05H,02H,03H,01H ;
SECOND D B 09H,03H, 08H,09H;
THIRD DB 20 DUP (?)
DATA ENDS
STACK SEGMENT
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论