第三章习题解答
JL JMP L1: MOV JMP L2: EXIT: MOV ……
L1 EXIT AX, 1 EXIT AX, 2
;AX=0002H
;AX=0001H
结果:AX=000 2H,DX=0ACF0H 结果: 19. 已知组合 已知组合BCD码的存放情况如图 码的存放情况如图3-38(见书第 码的存放情况如图 (见书第147页)所示,按要求 页 所示, 编写计算程序: 编写计算程序: (1)从DATA1单元开始,将8个组合 从 单元开始, 个组合BCD码累加起来,其和 超过 字节 存 码累加起来, 超过1字节 单元开始 个组合 码累加起来 其和(超过 字节)存 入以RES为首址的单元中 低位在前 ;(2)将它们看成 个分别以 为首址的单元中(低位在前 将它们看成2个分别以 入以 为首址的单元中 低位在前); 将它们看成 个分别以DATA1、 、 DATA2为首址的 位十进制数 低位在前 ,求此两数之差并存入以 为首址的8位十进制数 低位在前), 为首址的 位十进制数(低位在前 求此两数之差并存入以RES为 为 首址的单元中。 首址的单元中。 解答: 解答: (1)LEA ) SI, DATA1
第三章习题解答
15.已知有如下程序段: 已知有如下程序段: 已知有如下程序段 MOV MOV AND AND AL,35H DL,AL DL,0FH ;DL=05H
AL,0F0H ;AL=30H
MOV CL,4 SHR MOV MUL AL,CL BL,10 BL ;(AL)=(AL)X1 0=1EH (30) ;AL=(AL)+(DL)=1EH+05H=23H ;AL右移 位,AL=03H 右移4位 右移
XLAT HEX ;AL=[BX+AL]=05H STOSB ),[HCOD]=‘5’,DI=DI+1 ;[DI] (AL), ), , 上述程序执行后,字节单元HCOD及其相邻单元 及其相邻单元HCOD+1的内容是 上述程序执行后,字节单元 及其相邻单元 的内容是 多少?该程序段的功能是什么? 多少?该程序段的功能是什么? 答案: 其功能是将AL中存放的 中存放的1字节 答案:[HCOD+1]=‘C’,[HCOD]=‘5’, 其功能是将 中存放的 字节 , 十六进制数转换为2个对应的 个对应的ASCⅡ字符 十六进制数转换为 个对应的 Ⅱ 17.有如下程序段: 有如下程序段: 有如下程序段 MOV AL,DB1 ;AL=7BH , MOV AH,0 , MOV DL,10 , L1:DIV DL : ;(AL)=(AX)/(DL)=0CH,(AH)=03H , 01H 02H 00H 01H MOV BL,AH ;BL=03H , 02H , 01H , MOV BH,0 , PUSH 入栈, 入栈, ;0003H入栈,0002H入栈,0001H入栈 入栈 入栈 入栈 MOV AH,0 ;AX=000CH,0001H,0000H , , , CMP AL,0 , JNZ L1 若内存单元DB1的值为 的值为7BH,则程序将依次向堆栈压入哪些数据? 若内存单元 的值为 ,则程序将依次向堆栈压入哪些数据? 该程序段实现了什么功能? 该程序段实现了什么功能?
解答: 解答: BX+1200H=9632H 所以, 所以,DS:[BX+1200H] PA=69632H CALL执行时:断点处CS=2000H,IP=3254H 执行时:断点处 执行时 , 所以, 所以,CALL后:IP=[69633H][69632H]=1100H 后 CS=[69635H][69634H]=3322H 堆栈指针: 不变 不变=5000H 堆栈指针:SS不变 SP=SP-4=3254H 栈顶2个字单元内容: 栈顶 个字单元内容:SS:[3254H]=54H,SS:[3255H]=32H 个字单元内容 SS:[3256H]=00H,SS:[3257H]=20H
LOOP AGAIN MOV (2) ) LEA LEA LEA CLD RES,AX , SI,DATA2 , BX,DATA1 , DI,RES , ;存放累加结果 ;SI指向被减数 指向被减数 ;BX指向减数 指向减数 ;DI指向结果存放单元 指向结果存放单元 ;DF=0,自动增量 ,
MOV CLC NEXT: LODSB :
20.有一个 位二进制数,由高位字到低位字分别存放在 、CX、BX、 有一个64位二进制数 由高位字到低位字分别存放在DX、 、 、 有一个 位二进制数, AX 4个16位数据寄存器中,将该数视为无符号数,编程把它左移 位;再 位数据寄存器中, 个 位数据寄存器中 将该数视为无符号数,编程把它左移1位 当成带符号数,编程把它右移2位 当成带符号数,编程把它右移 位。 解答: 解答: (1)SAL ) RCL AX, 1 BX, 1 ;低位补0,高位 CF 低位补 , 入低位( ),高位 ;CF入低位(D0),高位 CF 入低位
CLD LODSB MOV MOV AGAIN: ADD DAA ADC INC AH, 0 SI CX, 7 AH, 0 AL, [SI]
;DF=0,增量 , 中装入第一个BCD码,SI=SI +1 ;AL中装入第一个 中装入第一个 码 ;写加次数: 7次 写加次数: 次
;BCD调整 调整 ;进位加入高字节中 ;修改地址指针
2.已知数据段中定义了如下变量和符号: 已知数据段中定义了如下变量和符号: 已知数据段中定义了如下变量和符号 A1 DB ? A2 DB 8 K1 EQU 100 判断下列指令的正误,并说明错误原因: 判断下列指令的正误,并说明错误原因: (X)因为符号常数不能再赋值 ) (1)MOV ) K1,AX , A2,AH (2)MOV ) , (√) BX,K1 (3)MOV ) , (√) MOV [BX],DX , A1,A2 (4) CMP ) , (X)A1,A2均为存储器单元 ) , 均为存储器单元 (5) K1 EQU 200 ) (X)K1无定义 解除前不能重 ) 无定义,解除前不能重 无定义 新定义
ADD AL,DL
执行之后,AL等于多少?该程序完成了什么功能? 执行之后, 等于多少?该程序完成了什么功能? 等于多少 答案:AL=23H,功能:将组合BCD转换为 进制。 答案: ,功能:将组合 转换为16进制。 转换为 进制
16.以HEX为首址的字节单元处存放着一串 以 为首址的字节单元处存放着一串ASCII码字 为首址的字节单元处存放着一串 码字 符:”0123456789ABCDEF“,并有如下程序段: ,并有如下程序段: MOV LEA INC STD MOV MOV AND XLAT STOSB MOV MOV SHR AL,AH , CL,4 , AL,CL , ;右移4位,AL=05H 右移 位 AL,5CH , AH,AL , AL,0FH , HEX ;AH=5CH ;AL=0CH ;AL=[BX+AL]=‘C’ ),[HCOD+1]=‘C’,DI=DI-1 ;[DI] (AL), ), , ;AL=5CH BX,OFFSET HEX , DI,HCOD , DI
4.设(DS)=6000H,( )=8432H,( )=5000H, 设 ,(BX) ,(SS) ) ,( ,( , (SP)=3258H,内存 ) ,内存69632H~69635H单元的内容依次是 ~ 单元的内容依次是 00H、11H、22H、33H。4字节指令 字节指令CALL DWORD PTR 、 、 、 。 字节指令 [BX+1200H]本身位于 本身位于2000H:3250H处的双字节单元中。 处的双字节单元中。 本身位于 : 处的双字节单元中 执行该指令后转移到子程序入口时, 、 、 、 当8086执行该指令后转移到子程序入口时,CS、IP、SS、 执行该指令后转移到子程序入口时 SP各寄存器以及栈顶 个字节单元的内容分别是多少? 各寄存器以及栈顶2个字节单元的内容分别是多少 各寄存器以及栈顶 个字节单元的内容分别是多少?
3.若数据段有如下定义: 若数据段有如下定义: 若数据段有如下定义 NUM1 EQU NUM2 DW 23H 0
则指令MOV NUM2,NUM1的源、目的操作数的寻址方式 的源、 则指令 , 的源 以及指令执行后NUM2+1单元的内容分别是什么? 单元的内容分别是什么? 以及指令执行后 单元的内容分别是什么 解答: 解答:MOV NUM2,NUM1 , 源操作数:立即数寻址, 源操作数:立即数寻址,23H 目的操作数: 目的操作数:直接寻址 [NUM2+1]=00H
;x<1,转MIN2 转 ; 1≦x≦30,存入 存入0,(y=0) ≦ ≦ 存入
EXIT:………
第四章习题
1.判断以下说法是否正确,如有错,请说明原因并改正: 判断以下说法是否正确,如有错,请说明原因并改正: 判断以下说法是否正确 (1)伪指令在汇编过程中不会产生二进制代码。(√ ) )伪指令在汇编过程中不会产生二进制代码。 (2)宏和过程的相同之处是都可用于简化源程序书写、精 )宏和过程的相同之处是都可用于简化源程序书写、 简目标代码。 X) 简目标代码。 (X) (3)在计算机中,高级语言通常需要转换为汇编语言后才 )在计算机中, 能执行。 能执行。 (X) ) (4)汇编语言程序上机一般包括编辑、汇编、链接和调试 )汇编语言程序上机一般包括编辑、汇编、 几个步骤。 几个步骤。 (√ )
5.已知某数据段从物理地址 已知某数据段从物理地址03000H处开始,定义如下: 处开始, 已知某数据段从物理地址 处开始 定义如下: DSEG ORG A1 A2 CNT A3 DSEG SEGMENT 2000H DD DB EQU DW ENDS 2 DUP(7,1,?) 10 DUP(0,4,3 DUP(2),5) 20H 100 DUP(?)
功能: 一字节的无符号16进制数转换为非组合 进制数转换为非组合BCD码 并入栈。 功能:将 一字节的无符号 进制数转换为非组合 码 并入栈。 18.下面的程序段执行后,DX、AX的值分别为多少? 下面的程序段执行后, 、 的值分别为多少 的值分别为多少? 下面的程序段执行后 为首址的字单元中的数据依次为1234H、5678H ;以X为首址的字单元中的数据依次为 为首址的字单元中的数据依次为 、 为首址的字单元中的数据依次为8765H、4321H ;以Y为首址的字单元中的数据依次为 为首址的字单元中的数据依次为 、 …… LEA LEA MOV MOV ADD ADC CMP JL CMP SI,X , DI,Y , DX,[SI+2] , AX,X , AX,X , DX,[SI+2] , DX,[DI+2] , L2 AX,Y , ;(AX)-8765H,(AX)<8765H , ;DX=5678H ;AX=1234H ;AX=2468H ;(DX)=0ACF0H ;(DX)-4321H,(DX)<4321H ,