微机原理第四章课后习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章课后作业(6—27)
6.试按下列要求分别编制程序段。
(1)把标志寄存器中符号位SF置“1”。
(2)寄存器AL中高、低四位互换。
(3)由寄存器AX、BX组成一个32位带符号数(AX中存放高16位),试求这个数的负数。
(4)现有三个字节存储单元A、B、C,在不使用ADD和ADC指令的情况下,实现(A)+(B) C。
(5)用一条指令把CX中的整数转变为奇数(如原来已是奇数,则CX中数据不变,如原来是偶数,则(CX)+1 形成奇数)。
答:
(1) LAHF
OR AH,80H
SAHF
(2) MOV CL,4
ROL AL,CL
(3) MOV CX,0
NEG BX
JC CHG
JMP GO
CHG: MOV CX,1
GO: NEG AX
SUB AX,CX
(4) MOV CL,A
MOV AL,B
MOV X,AL
CHECK:INC X
DEC CL
JNZ CHECK
(5) OR CX,0001H
7.试给出下列各指令的机器目标代码。
(1)MOV BL,12H [SI]
(2)MOV 12H [SI],BL
(3)SAL DX,1
(4)AND 0ABH [BP] [DI],1234H
答:(1)100010 1 0 01 011 100 00010010=8A5C12H
(2)100010 0 0 01 011 100 00010010=885C12H
(3)110100 0 1 11 100 010=0D1E2H
(4)100000 0 1 10 100 011 10101011 00000000 00110100 00010010
=81A3AB003412H
8.执行下列指令:
STR1 DW ‘AB’
STR2 DB 16DUP(?)
CNT EQU $-STR1
MOV CX,CNT
MOV AX,STR1
HLT
执行完成之后,寄存器CL的值是多少?寄存器AX的值是多少?
答:因为CNT=16+2=18,所以CX=18=0012H,所以CL=12H=0001,0010;
AX中装入的是‘AB’的ASCII码值,其中‘A’在高位AH中,‘B’在低位AL 中,所以AX=4142H=0100,0001,0100,0010。
9.JMP FAR PTR ABCD (ABCD是符号地址)的转移方式是什么?
答:段间直接转移。
10.按下列指令写出相应指令或程序段。
(1)写出两条使AX寄存器内容为0的指令。
(2)使BL寄存器中的高、低4位互换。
(3)现有两个带符号数分别在X1和X2变量中,求X1/X2,商和余数分别送入Y1和Y2中。
(4)屏蔽BX寄存器中的b4、b6、b11位。
(5)将AX寄存器的b4、b14位取反,其它位不变。
(6)测试DX寄存器的b0、b9位是否为“1”。
(7)使CX寄存器中的整数变为奇数(如原已经是奇数,则不变)。
答:(1)MOV AX,0 XOR AX,AX
(2)MOV CL,4
ROL BL,CL
(3)MOV AX,X1
CWD
IDIV X2
MOV Y1,AX
MOV Y2,DX
(4)AND BX,1111 O111 1O10 1111
(5)XOR AX,0100 0000 0001 0000
(6)MOV AX,DX
RCR AX,1
JC B0Y ;转向表示b0是1的标号为B0Y的程序段
MOV AX,DX
MOV CL,10
ROR AX,CL
JC B9Y ;转向表示b9是1的标号为B9Y的程序段(7)OR CX,0001H
11.写出把首地址为BLOCK的字数组的第6个字送入AX寄存器的指令,要求使用下列寻址方式。
(1)寄存器间接寻址;(2)直接寻址;
(3)基址寻址;(4)基址变址相对寻址。
答:(1)LEA DI,BLOCK
ADD DI,10
MOV AX,[DI]
(2)MOV AX,[BLOCK+10]
(3)LEA BX,BLOCK
ADD BX,10
MOV AX,[BX]
(4)LEA BX,BLOCK
MOV SI,0
MOV AX,[BX+SI+0AH]
12. 指令“SUB AX,BX”执行后,CF=1,说明最高有效位发生了什么现象?对无符号数来说,操作结果发生了什么现象?
答:CF=1说明最高有效位发生进位;对无符号数,操作结果产生溢出。
13. 在1000H单元中有一条二字节指令JMP SHORT LAB,如果其中的偏移量分别为30H、6CH、0B8H,则转向地址LAB的值分别为多少?
答:1000H*10H+2H+30H=10032H
1000H*10H+2H+6CH=1006EH
1000H*10H+2H+0B8H=100BAH
14.(AL)=9AH,(BL)=0BCH,当分别进行下列指令运算后,写出标志位ZF、PF、CF、SF的内容。
(1)ADD AL,BL
(2)SUB AL,BL
(3)AND AL,BL
(4)OR AL,BL
(5)XOR AL,BL
答:(AL)=9AH=1001 1010 ;(BL)=0BCH=1011 1100