第四章汇编语言程序设计习题答案
一、单项选择题
1.C
2.B
3.C
4.C
5.C
6.A
7.A
8.C
9.B10. D
11.B12.B13.D14.C15.C16.A17.D18.D19.A20. C
21.B22.D23.D24. A
二、多项选择题
1.ABCEF
2.ACE
3.AC
4.ABCD
三、填空题
1.PARA
2.1,2,60,120, 1
3.SEGMENT,ENDS
4.1200
5.段内转移,段间转移
6.AH
7.过程,PROC,RET,NEAR,FAR
8.LEA BX,BUF
9.1, 4
10..0504H
11.ASM,EXE
12.立即寻址,直接寻址
四、判断题
××××V V V××V
五、程序分析题
1. 3
2.12H,3412H
3.46H,73H
4.(1) 从目的串中查找是否包含字符‘0’,若找到则停止,否则继续重复搜索。
(2) ZF=1, 说明已找到字符
ZF=0, 说明未找到字符
CX 0,说明中途已找到字符退出
CX=0,且ZF=0说明串中无字符‘0’
5.1, 0, 3, 2, 5, 4, 7, 6, 9, 8
6.87H,81H
7.44AAH,44D5H
8.DEC CX,JNC,JZ
9.JNZ L2
10.ADC DX,0,CLC
11.AAS
12.STOSB
13.1,3,1,2, 2
14.(2000H)=39H (2001H)=00H
将(2000H),(2001H)两相邻单元中存放的未组合型BCD码压缩成组合型BCD码,
并存入(2000H)单元,0 (2001H)
15.A)2345H,6780H
B)将DX、AX中存放的32位二进制数向左移动4位
16.0 ,1009H0
对数据段内1000H~1008H单元置数,依次送入1,2,4,8,16,32,64,128,
0共九个
17.20H,10,T
18.①$-BUF②ASSUME CS:CODE,DS:DATA③MOV DS,AX
MOV AX,0⑤JLE NEXT⑥JNZ NEXT⑦JNZ LOPA⑧BEGIN
19.不相同,第一个数据段72H在前,04在后,后一个04H在前,72H在后。
20.09H,0EH,0DH
六、简答题
1.NUMS分配了180个字节(3分) V AR分配了15个字节
2.(1)把SP所指的堆栈顶部的一个字的内容弹回IP,SP加2。
(2)段间返回指令把SP所指的堆栈顶部的两个字的内容先弹回IP后弹回CS,SP加
4。
3.2, 10, 20
,16字节单元
(2)程序运行后,XAD、YAD,单元中的值为9和39H,屏幕上显示的字符是“9”
6.YXGFDCBA9621
7.程序功能是将从STRING开始的N个字节中的字符串变成大写存放到从NEWSTR开
始的N个字节中。程序执行后,从NEWSTR开始的N个字节中的内容是"ASSEMBLE LANGUAGE IS POWERFUL"。
七、编程题
1.参考程序:
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
GO: MOV AX,DATA
MOV DS,AX
AND AL,0F0H
EXIT:
CODE ENDS
END GO
2.参考程序:
DATA SEGMENT
ORG 1000H
DAT DB '1234$567$8'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
CLD
MOV BX,1000H
MOV CX,100
XOR AX,AX
MOV AL,'$'
CALL FOUND
FOUND PROC NEAR
PUSH AX
CLD
REPNE SCASB
XOR AX,AX
AND CX,0FFH
JZ OVER
DEC BX
MOV AL,[DI]
OVER: RET
POP AX
FOUND ENDP
CODE ENDS
END START
https://www.wendangku.net/doc/7f19288551.html, 2100H
DATA SEGMENT
DAT1 DB 1,2,3,4,5,6,7,8
DB 1,2,3,4,5,6,7,8
DB 0,0,0,0,0,0,0,0
SUM DB ?
DATA ENDS
STACK SEGMENT
ST1 DB 100 DUP(?)
TP EQU LENGTH ST1
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK START: MOV AX, DATA
MOV DS, AX
MOV AX, STACK
MOV SS, AX ;初始化堆栈段
MOV BX, OFFSET DAT1 ;指向数据
MOV CX,8 ;循环次数CX=8
CALL MADD
MADD PROC NEAR
PUSH AX
PUSH DX
MOV DX,SI
MOV BX,0
MOV DI,SI
ADD DI,8
ADD BX,16
CLC ;清进位CF= 0
AA: MOV AL, [SI] ;取一个字节到AX
ADC AL,[DI] ;AX =AX+[DI] +CF
MOV [BX+10],AL ;存一个字到[BX]
PUSHF ;保护进位CF
INC SI ;修改第一个数的地址指针SI
INC DI ; 修改第二个数的地址指针DI
INC BX ;修改结果指针BX
POPF ;恢复标志寄存器
LOOP AA ; CX = CX-1,若CX=0 转AA;CX=0,暂停
MOV BX,DX
ADD BX,16
POP DX
POP AX
RET
MADD ENDP
CODE ENDS
END START
https://www.wendangku.net/doc/7f19288551.html, 2000H
DATA SEGMENT
DATA1 DB 1234H,1234H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
GO: MOV AX,DATA
MOV DS,AX
MOV AX,PTR WORD [2000H]
MOV CX,PTR WORD{2002H}
MUL CX
MOV [2004H],AX
MOV [2006H],DX
CODE ENDS
END GO
5. CODE SEGMENT
ASSUME CS:CODE, DS:CODE
GO: MOV AX,DATA
MOV DS,AX
AND AX,02H
JZ ZE:
MOV DH,1
JMP EXIT
ZE: MOV DH,0
EXIT:
CODE ENDS
END GO
6.参考程序:
MOV BX,OFFSET BUF
MOV CX,80
MOV S1,0
MOV S2,0
MOV S3,0
COMPARE:MOV AL,[BX]
CMP AL,60
JB DON1 ;低于60转
CMP AL,80
JBE DON2 ;低于等于80,高于60转
INC S3 ;高于80,S3+1
JMP LP
DON1:INC S1
JMP LP
DON2:INC S2
LP: INC BX
LOOP COMPARE
HLT
7.参考程序:
MOV DI,2000H
CLD
MOV AL,23H
MOV CX,100
REPNZ SCASB ;AL -‘#’
JNZ STOP ;没找到,退出
DEC DI ;找到,退回到原地址
MOV [DI],00H ;替换为0
MOV DX,DI
STOP:HLT
8 START:PUSH CS
PUSH IP
MOV AX,0
MOV ES,AX
MOV DI,4*60H
MOV AX,OFFSET FUNCTION
STOSW
MOV AX,SET FUNCTION
STOSW
INT 60H
FUNCTION PROC
MOV AL,DA T
CMP AL,DA T+1
JNC L1
MOV AH,DA T+1
MOV BY1,AL
MOV AL,AH
L1:SUB AL,DA T+1
AAS
RUNCTION ENDP
9.DATA SEGMENT
DAT DB 3,4,2,3,4,6,7,8,9,19
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DA TA
MOV DS,AX
MOV CX,10
MOV SI,OFFSET DAT1
LP1: CALL PAIXU
INC SI
LOOP LP1
MOV DX,OFFSET DAT1
MOV AH,09H
INT 21H
INC DX
MOV CX,08H
MOV AX,0
LPADD: ADD AX,PTR BYTR[DX]
LOOP LPADD
MOV BL,8
DIV BL
MOV A VG,AH
MOV AH,4CH
INT 21H
PAIXU PROC NEAR
PUSH CX
PUSH SI
MOV AL,[SI]
CMPLP: CMP AL,BYTE PTR[SI+1]
JGE NEXT
MOV BL,[SI+1]
MOV [SI],BL
MOV [SI+1],AL
MOV AL,BL
NEXT: INC SI
LOOP CMPLP
POP SI
POP CX
PAIXU ENDP
CODE ENDS
END START
10.DATA SEGMENT
BUFER DB 10,0,20,15,38,236
MAX DB 0
MIN DB 0
A VI D
B 0
DA TA ENDS
STACK SEGMENT PARA STACK‘STACK’
DW 100 DUP (?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK (1分) START PROC FAR
BEGIN:PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA DI,BUFFER
MOV DX,0 ;使DH=0,DL=0
MOV CX,6
MOV AX,0 ;和清0
MOV BH,0 ;最大值
MOV BL,0FFH ; 最小值LOP1: CMP BH,[DI]
JA NEXT1 ;若高于转移
MOV BH,[DI];大值→BH
NEXT1: CMP BL,[DI] ;
JB NEXT2 ;若低于转移
MOV BL,[DI];小值→BL
NEXT2: MOV DL,[DI];取一字节数据
ADD AX,DX ; 累加和
INC DI
LOOP LOP1
MOV MAX,BH;送大值
MOV MIN,BL;送小值
MOV DL, 6
DIV DL,;求平均值
MOV A VI,AL;送平均值
RET
START ENDP
CODE ENDS
END BEGIN
11解:
(1).【程序】(完整段模式)
DA TA SEGMENT
SCORE DB 7,8,9,8,10,10,9,8,7,10
N=$-SCORE
A VERAGE D
B ?
MAX DB ?
MIN DB ?
DA TA ENDS
CODE SEGMENT 'CODE'
ASSUME CS:CODE,DS:DA TA
START: MOV AX,DA TA
MOV DS,AX
MOV DL,SCORE
MOV MAX,DL
MOV MIN,DL
MOV CX,N-1
MOV BX,1
CYCLE: MOV AL,SCORE[BX]
ADD DL,AL
CMP AL,MAX
JLE CMPMIN
MOV MAX,AL
CMPMIN: CMP AL,MIN
JGE NEXT
MOV MIN,AL
NEXT: INC BX
LOOP CYCLE
SUB DL,MAX
SUB DL,MIN
MOV CL,3
SAR DL,CL
MOV A VERAGE,DL
MOV AH,4CH
INT 21H
CODE ENDS
END START
(2).【程序】(简化段模式)
.MODEL SMALL
.386
.STACK
.DA TA
SCORE DB 7,8,9,8,10,10,9,8,7,10
N=$-SCORE
.DATA?
A VERAGE D
B ?
MAX DB ?
MIN DB ?
.CODE
.STARTUP
MOV DL,SCORE
MOV MAX,DL
MOV MIN,DL
MOV CX,N-1
MOV BX,1
.WHILE CX
MOV AL,SCORE[BX]
ADD DL,AL
.IF AL > MAX
MOV MAX,AL
.ENDIF
.IF AL < MIN
MOV MIN,AL
.ENDIF
INC BX
DEC CX
.ENDW
SUB DL,MAX
SUB DL,MIN
SAR DL,3
MOV A VERAGE,DL
.EXIT
END
12.(1).【程序】(完整段模式)
DA TA SEGMENT
SCORE DB 90,23,56,67,98,78,10,45,87,100 N=$-SCORE
SCOREF DB 0
SCOREE DB 0
SCORED DB 0
SCOREC DB 0
SCOREB DB 0
SCOREA DB 0
DA TA ENDS
CODE SEGMENT 'CODE'
ASSUME CS:CODE,DS:DA TA START: MOV AX,DA TA
MOV DS,AX
LEA SI,SCORE
MOV CX,N
MOV DL,10
CLASS: MOV AH,0
MOV AL,[SI]
DIV DL
SUB AL,5
JG GREAT
INC BYTE PTR SCOREF
JMP NEXT
GREAT: MOV AH,0
MOV BX,AX
INC BYTE PTR SCOREF[BX] NEXT: INC SI
LOOP CLASS
MOV AH,4CH
INT 21H
CODE ENDS
END START
(2).【程序】(简化段模式)
.MODEL SMALL
.386
.STACK
.DA TA
SCORE DB 90,23,56,67,98,78,10,45,87,100
N=$-SCORE
.DA TA?
SCOREF DB 0
SCOREE DB 0
SCORED DB 0
SCOREC DB 0
SCOREB DB 0
SCOREA DB 0
.CODE
.STARTUP
LEA SI,SCORE
MOV CX,N
MOV DL,10
.REPEAT
MOV AH,0
MOV AL,[SI]
DIV DL
SUB AL,5
.IF(AL<=0)
INC BYTE PTR SCOREF
.ELSE
MOV AH,0
MOV BX,AX
INC BYTE PTR SCOREF[BX]
.ENDIF
INC SI
.UNTILCXZ
.EXIT
END
END
13.参考程序如下:
DSEG SEGMENT
BUF1 DB 98H,32H
CNT EQU $ - BUF1
BUF2 DB 51H,46H
SUM DB CNT DUP(?)DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG MAIN PROC FAR
START:PUSH DS
MOV AX,0
PUSH AX
MOV AX,DSEG
MOV DS,AX
MOV SI,OFFSET BUF1
LEA DI,BUF2
MOV BX,OFFSET SUM
MOV CX,CNT
CLC
LOP:MOV AL,[SI]
ADC AL,[DI]
DAA
MOV [BX],AL
INC SI
INC DI
INC BX
LOOP LOP
RET
AIN ENDP
CSEG ENDS
END START
14.参考程序如下:
DSEG SEGMENT
A DW ?
B DW ?
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG MAIN PROC FAR
START:PUSH DS
MOV AX,0
PUSH AX4
MOV AX,DSEG
MOV DS,AX
BEGIN:MOV AX,A
MOV BX,B
XOR AX,BX
TEST AX,0001H
JZ CLASS
TEST BX,0001H
JZ EXIT
XCHG BX,A
MOV B,BX
JMP EXIT
CLASS:TEST BX,0001H
JZ EXIT
INC A
INC B
EXIT:RET
MAIN ENDP
CSEG ENDS
END START
15. LOP1: MOV AH, 1
INT 21H
CMP AL, ‘Y’
JZ YES
CMP AL, ‘N’
JZ NO
JMP LOP1
…………
YES: ………..
……………
NO:
(YES和NO分别是两程序段入口处的标号)
16.DATA SEGMENT
BUF1 DW-56,24,54,-1,89,-8……
BUF2 DW45,-23,124,345,-265,……
SUM DW10DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME DS: DATA, CS: CODE ES: DATA START MOV AX, DATA
MOV DS, AX
MOV ES, AX
LEA SI, BUF1
LEA DI, BUF2
LEA BX, SUM
MOV CX, 10
LOP1: MOV AX, [SI]
CMP AX, 0
JAE NEXT1
NEG AX
NEXT1: MOV [SI], AX
MOV AX, [DI]
CMP AX, 0
JAE NEXT2
NEG AX
NEXT2: ADD AX, [SI]
MOV [BX], AX
INC SI
INC SI
INC DI
INC DI
INC BX
INC BX
DEC CX
LOOP LOP1
MOV AH, 4CH
INT 21H
CODE ENDS
END START
新版汇编语言程序设计习题答案(钱晓捷主 编)
新版汇编语言程序设计习题答案(钱晓捷主编) 第一章汇编语言基础知识 1.1、简述计算机系统的硬件组成及各部分作用 1.2、明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 1.3、什么是汇编语言源程序、汇编程序、目标程序? 1.4、汇编语言与高级语言相比有什么优缺点? 1.5、将下列十六进制数转换为二进制和十进制表示 (1)FFH (2)0H (3)5EH (4)EFH (5)2EH (6)10H (7)1FH (8)ABH 1.6、将下列十进制数转换为BCD码表示 (1)12 (2)24 (3)68 (4)127 (5)128 (6)255 (7)1234 (8)2458 1.7、将下列BCD码转换为十进制数 (1)10010001 (2)10001001 (3)00110110 (4)10010000 (5)00001000 (6)10010111 (7)10000001 (8)00000010 1.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示 (1)0 (2)-127 (3)127 (4)-57 (5)126 (6)-126 (7)-128 (8)68 1.9、完成下列二进制数的运算 (1)1011+1001 (2)1011-1001 (3)1011×1001 (4)10111000÷1001 (5)1011 ∧~1011 (8)1011 ⊕ 1001 1001(6)1011 ∨1001(7) 1.10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符? 1.11、计算机中有一个“01100001”编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符? 1.12、简述Intel 80x86系列微处理器在指令集方面的发展。 1.13、什么是DOS和ROM-BIOS? 1.14、简述PC机最低1MB主存空间的使用情况。 1.15、罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用。 1.16、什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。
第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐 条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处 理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU 可以直接存取,它 由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大 量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读 写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息 只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地 址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端 口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的 程序就是目标程序。 〔习题1.4〕汇编语言与高级语言相比有什么优缺点? 〔解答〕 汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件
附录:《IBM—PC汇编语言程序设计》习题参考答案 第一章.习题 1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数: (1) 369 (2) 10000 (3) 4095 (4) 32767 答:(1) 369=1 0111 0001B=171H (2) 10000=10 0111 0001 0000B=2710H (3) 4095=1111 1111 1111B=FFFH (4) 32767=111 1111 1111 1111B=7FFFH 1.2将下列二进制数转换为十六进制数和十进制数: (1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111 答:(1) 10 1101B=2DH=45 (2) 1000 0000B=80H=128 (3) 1111 1111 1111 1111B=FFFFH=65535 (4) 1111 1111B=FFH=255 1.3将下列十六进制数转换为二进制数和十进制数: (1) FA (2) 5B (3) FFFE (4) 1234 答:(1) FAH=1111 1010B=250 (2) 5BH=101 1011B=91 (3) FFFEH=1111 1111 1111 1110B=65534 (4) 1234H=1 0010 0011 0100B=4660 1.4完成下列十六进制数的运算,并转换为十进制数进行校核: (1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F 答:(1) 3A+B7H=F1H=241 (2) 1234+AFH=12E3H=4835 (3) ABCD-FEH=AACFH=43727 (4) 7AB×6FH=35325H=217893 1.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。 (1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76) 答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0 (2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0 (3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0 (4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1 (5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1 (6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=0 1.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或 无符号数时,它们所表示的十进制数是什么? (1) D8 (2) FF 答:(1) D8H表示的带符号数为-40,D8H表示的无符号数为216; (2) FFH表示的带符号数为-1,FFH表示的无符号数为255。 1.7下列各数均为用十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字 符的ASCII码时,它们所表示的十进制数及字符是什么? (1) 4F (2) 2B (3) 73 (4) 59 答:(1) 4FH表示的十进制数为79,4FH表示的字符为O; (2) 2BH表示的十进制数为43,2BH表示的字符为+; (3) 73H表示的十进制数为115,73H表示的字符为s; (4) 59H表示的十进制数为89,59H表示的字符为Y。 1.8请写出下列字符串的ASCII码值。 For example, This is a number 3692. 答:46H 6FH 72H 20H 65H 78H 61H 6DH 70H 6CH 65H 2CH 0AH 0DH 54H 68H 69H 73H 20H 69H 73H 20H 61H 20H 6EH 75H 6DH 62H 65H 72H 20H 33H 36H 39H 32H 2EH 0AH 0DH
第一章微型计算机系统概述 1.3习题与综合练习 1.解释和区别下列名词术语 (1)微处理器(MP):具有中央处理器功能的大规模集成电路器件 微型计算机(MC) 微型计算机系统(MCS) (2)硬件:硬件是计算机系统的躯体,由控制器,运算器,存储器,输入设备,输出设备5大部分组成。 软件:软件是计算机的头脑和灵魂,可分为系统软件和应用软件。 (3)字节:8位二进制是一个字节。 字:16位二进制构成一个字。 字长:计算机的运算部件能同时处理的二进制数据的位数。 (4)指令指针:存放BIU要取的下一条指令的偏移地址。 指令寄存器: 指令译码器: 状态寄存器: (5)存储单元: 存储内容: 存储地址: 存储容量: (6)RAM: ROM: 软件固化: 2.冯·诺依曼计算机结构的特点是什么? (1)采用二进制数的形式表示数据和指令。 (2)将指令和数据存放在存储器中。 (3) 计算机硬件由控制器,运算器,存储器,输入设备和输出设备5大部分组成。 3.件数计算机系统中复杂指令集和精简指令集的特点和用途。 复杂指令集(CISC):在微型计算机的体系结构组成结构上是以复杂指令为设计的计算机,在指令的运行过程中按指令的复杂程度来指挥计算机完成各条指令,由于各条指令复杂程度不同分配的时钟周期各不相同,执行指令所需时间就不相同。CISC体系的指令集由微程序来实现,即每一个操作由若干微操作的程序组合来实现。所以CISC可以使用微指令编程的方式实现多种和功能复杂的指令。 精简指令系统(RISC):不管计算机的指令如何复杂,在一个计算机时钟周期内完成,计算速度快,指令集简单。每一条指令直接有硬布线实现,即它的每条指令原则上有自己的一套逻辑时序电路直接实现,所以单条指令的实现所占用的硬件资源较多。因为该体系没有能采用增加单条指令的功能或高位的指令语义,也没有增加指令的条数,而是集中于它的精简指令集上。 4.CPU是计算机系统中的重要部件,试说明CPU的结构和功能。 微处理器是计算机中最关键的部件,由控制器,运算器,寄存器组和辅助部件组成。 控制器是硬件系统的指挥部,负责从存储器中取出指令,分析指令,确定指令类型并对指令进行译码,按时间先后顺序负责向其他各部件发出控制信号,保证各部件协调工作。运算器是用来进行算术运算和逻辑运算的元件。寄存器组用来存放计算所需的各种操作数,地址
汇编语言程序设计习题及答案 汇编语言程序设计习题及答案 汇编语言是一种底层的计算机语言,它直接操作计算机的硬件资源。虽然在现 代计算机编程中,高级语言如C、Java等更为常见,但了解汇编语言的基本原 理和编程技巧对于理解计算机底层工作原理和进行性能优化非常重要。本文将 介绍一些汇编语言程序设计的习题及其答案,帮助读者巩固和提升汇编语言编 程能力。 一、基础习题 1. 编写一个汇编程序,将存储器中的某个字节的值加1,并将结果存回原位置。答案: ```assembly MOV AL, [地址] INC AL MOV [地址], AL ``` 2. 编写一个汇编程序,计算存储器中一个数组的和,并将结果存放在指定的寄 存器中。 答案: ```assembly MOV CX, 数组长度 MOV BX, 数组首地址 MOV AX, 0
LOOP_START: ADD AX, [BX] ADD BX, 2 LOOP LOOP_START ``` 二、进阶习题 1. 编写一个汇编程序,实现字符串的逆序输出。答案: ```assembly MOV SI, 字符串首地址 MOV DI, 字符串尾地址 MOV CX, 字符串长度 DEC CX REVERSE: MOV AL, [SI] MOV AH, [DI] MOV [DI], AL MOV [SI], AH INC SI DEC DI LOOP REVERSE ```
2. 编写一个汇编程序,实现两个16位无符号整数的相乘,并将结果存放在指定的寄存器中。 答案: ```assembly MOV AX, 第一个数 MOV BX, 第二个数 MUL BX ``` 三、挑战习题 1. 编写一个汇编程序,实现一个简单的计算器,支持加法、减法、乘法和除法运算。 答案: ```assembly READ_INPUT: ; 读取用户输入 ; ... PARSE_INPUT: ; 解析用户输入,获取操作数和运算符 ; ... CALCULATE: ; 根据运算符进行相应的计算 ; ...
计算机组成原理与汇编语言程序设计课后习题及解答 徐, 第1章习题一 1.什么是程序存储工作方式? 答:计算机的工作方式——存储程序工作方式。即事先编写程序,再由计算机把这些信息存储起来,然后连续地、快速地执行程序,从而完成各种运算过程。 2.采用数字化方法表示信息有哪些优点? 用数字化方法表示信息的优点: (1)抗干扰能力强, 可靠性高。 (2)依靠多位数字的组合,在表示数值时可获得很宽的表示范围以及很高的精度。 (3)数字化的信息可以存储、信息传送也比较容易实现。 (4)可表示的信息类型与范围及其广泛,几乎没有限制。 (5)能用逻辑代数等数字逻辑技术进行信息处理,这就形成了计算机硬件设计的基础。 3.如果有7×9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。 4.数字计算机的主要特点是什么? 1. (1)能在程序控制下自动连续地工作; (2|)运算速度快; (3)运算精度高; (4)具有很强的信息存储能力; (5)通用性强,应用领域及其广泛。 5.衡量计算机性能的基本指标有哪些? 答:衡量计算机性能的基本指标: (1)基本字长——参加一次运算的数的位数; (2)数据通路宽度——数据总线一次能并行传送的位数; (3)运算速度——可用①CPU的时钟频率与主频,②每秒平均执行指令数,③典型四则运算的时间来表示。 (4)主存储器容量——可用字节数或单元数(字数)×位数来表示。 (5)外存容量——常用字节数表示。 (6)配备的外围设备及其性能。 (7)系统软件配置。 7.系统软件一般包括哪些部分?列举你所熟悉的三种系统软件。 系统软件一般包括操作系统,编译程序、解释程序、各种软件平台等。例如WINDOWS98操作系统,C语言编译程序等,数据库管理系统。 8.对源程序的处理有哪两种基本方式? 对源程序的处理通常有两种处理方式:解释方式和编译方式。 第2章习题二 1.将二进制数(101010.01)2 转换为十进制数及BCD码。 解:(101010.01)2 = (42.25)10 = (01000010.00100101)BCD 2.将八进制数(37.2)8转换为十进制数及BCD码. 解:(37.2)8 = (31.25)10 =(00110001.00100101)BCD 3.将十六进制数(AC.E)转换为十进制数及BCD码. 解: (AC.E)16 =(172.875)10 = 0.1)BCD 4.将十进制数(7 5.34)10转换为8位二进制数及八进制数、十六进制数。
4.1分析执行下列指令序列后的结果:1)MOVAX,1234H MOVBX,00FFH ANDAX,BX 【答】(AX)=0034H 2)MOVAL,0101B ANDAL,000111B;(AL)=000101B ORAL,11000B;(AL)=110101B XORAL,0011B;(AL)=11010B NOTAL 【答】(AL)=00101B 3)MOVDL,05H MOVAX,0A00H MOVDS,AX MOVSI,0H MOVCX,0FH AGAIN: INCSI CMP[SI],DL LOOPNE AGAIN HLT
本程序实现了什么功能? 【答】在以0A001H开始的15个单元中查找05H。 4)MOVAX,DSEGADDR MOVDS, AX MOVES,AX MOVSI, OFFSET B1ADDR MOVDI,OFFSET B2ADDR MOVCX,N CLD REPMOVSB HLT 本程序实现了什么功能? 【答】将B1ADDR中N个字节数据传送到B2ADDR开始的15个存储单元。5)MOVAX, 0H MOVDS,AX MOVES, AX MOVAL,05H MOVDI,0A000H MOVCX,0FH CLD AGAIN:
SCASB LOOPNEAGAIN HLT 本程序实现了什么功能? 【答】从地址0A000H开始的15个单元中查找字节型数据05H,用条件循环LOOPNZ,控制数据05H的查找。 4.2阅读程序: 1).CLD LEADI,[0100H] MOVCX, 0080H XORAX, AX REPSTOSW 本程序实现了什么功能? 【答】将DS中起始地址为0100H的128个字节单元清零。 2).MOVAL, 08H SAL,01H;(AL)=000100H MOVBL, AL MOVCL ,02H SAL,CL;(AL)=01000H ADDAL,BL;(AL)=0100H 本程序实现了什么功能?
1 汇编语言程序设计(第二版) 第二章 1、 答:直接由指令指定的I/O 端口数为256个。 2、答: 3、答:字节单元:(30022H ) = AB H ,(30024H ) = EF H 字单元: (30021H ) = AB34 H ,(30022H ) = CDAB H 。 4、答:3017:000A 的存储单元的物理地址是3017AH , 3015:002A 的存储单元的物理地址是3017AH , 3010:007A 的存储单元的物理地址是3017AH 。 5、答:该程序的第一个字的物理地址是0AAA40H 。 6、答:条件标志OF 、SF 、ZF 、CF 的值依次分别为0、0、0、0。 7、答:(1)AX 、BX 、CX 、DX 、AH 、AL 、BH 、BL 、CH 、CL 、DH 、DL 、 SP 、BP 、DI 、SI (注意:学生尽量不要用SP 参与加减运算) (2)CX (3)DX 、AX 、AH 、AL (4)CS 、DS 、ES 、SS (5)FLAGS (6)IP (7)SS 、SP 、BP 8、答:可以用来指示存储器地址的寄存器有BX 、SP 、BP 、DI 、SI 、IP 、CS 、DS 、 ES 、SS 。 9、答:唯一正确的是D 。 第三章 1。 .(1)立即寻址 没有 (2)直接寻址 7237H (3)使用BX 的寄存器寻址 没有 (4)使用BX 的间接寻址 637DH (5)使用BX 的寄存器相对寻址 0D5F0H (6) 基址变址寻址 8E18H (7)相对基址变址 004FH
2 2。根据下列要求,写出相应的汇编指令。 (1)ADD DX,BX (2) ADD AL,[BX][SI] (3) ADD [BX][0B2H], CX (4) MOV AX,2A59H ADD [0524H] ,AX (5) ADD AL ,0B5H 3。 (1)寄存器间接寻址 MOV BX,OFFSET [BLOCK][0AH] MOV DX ,[BX] (2)寄存器相对寻址 MOV SI,OAH MOV DX,[BLOCK][SI] (3)基址变址寻址 MOV BX ,BLOCK MOV SI,OAH MOV DX,[BX][SI] 4现有(DS ) =2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX 寄存器的内容。 (1)MOV AX,1200H 1200H (2) MOV AX,BX 0100H (3) MOV AX,[1200] 4C2AH 注意,是字单元!! (4)MOV AX,[BX] 3412H 同上 (5)MOV 1100[BX] 4C2AH (6) MOV AX,[BX][SI] 7856H (7) MOV AX,1100[BX][SI] 65B7H 5。 (1) 7CD9H (2) 1200H (3) 6319H 6。 MOV BX,2000H LES DI ,[BX] MOV AX, ES :DI 7。转向地址OBJ 的值分别为:(1)064DH (2)0691H (3)05E0H 注意有符号数的符号位~~ 8。(1) MOV AX,0ABH 立即数寻址 无物理地址 (2)MOV AX,BX 寄存器寻址 同上 (3)MOV AX,[100] 直接寻址 20100H (4)MOV AX,V AL 直接寻址 20050H (5) MOV AX,[BX] 寄存器间接寻址 20100H (6) MOV AX,ES :[BX] 直接寻址 21100H (7) MOV AX,[BP] 寄存器间接寻址 20010H
第一章习题与参考答案 1. 微处理器,微型计算机和微型计算机系统三者之间有何区别? 答:微处理器即CPU,它包括运算器、控制器、寄存器阵列和内部总线等部分,用于实现微型计算机的运算和控制功能,是微型计算机的核心;一台微型计算机由微处理器、内存储器、I/O接口电路以及总线构成;微型计算机系统则包括硬件系统和软件系统两大部分,其中硬件系统又包括微型计算机和外围设备;由此可见,微处理器是微型计算机的重要组成部分,而微型计算机系统又主要由微型计算机作为其硬件构成。 2. CPU在内部结构上由哪几部分构成?CPU应具备哪些主要功能? 答:CPU在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要功能是完成各种算数及逻辑运算,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。 3. 累加器和其它通用寄存器相比有何不同? 答:累加器是通用寄存器之一,但累加器和其它通用寄存器相比又有其独特之处。累加器除了可用做通用寄存器存放数据外,对某些操作,一般操作前累加器用于存放一个操作数,操作后,累加器用于存放结果。 4. 微型计算机的总线有哪几类?总线结构的特点是什么? 答:微型计算机的总线包括地址总线、数据总线和控制总线三类,总线结构的特点是结构简单、可靠性高、易于设计生产和维护,更主要的是便于扩充。 5. 举出10个微型计算机应用的例子。 答:略 6. 计算机I/O接口有何用途?试列出8个I/O接口。 答:计算机I/O接口是连接计算机和外部设备的纽带和桥梁,它主要用于协调和控制计算机与外设之间的信息流通和交换。例如:串行通讯口(COM口)、并行打印机口、软盘驱动器接口、硬盘驱动器接口、光驱接口、显示器接口、音响设备接口、其它通用设备接口(USB、SCSI等)。 7. 现在,计算机主板上一般都包括哪些I/O接口?I/O接口卡如何与主板相连? 答:现在,计算机主板上一般包括串行通讯口、并行打印口、软盘驱动器接口、硬盘驱动器接口、光驱接口、USB接口等。象显示器适配器、网卡、modem卡等I/O接口卡一般通过总线插槽与主板相连。 8. 简述系统总线,AGP总线,PCI总线及ISA总线的作用。 答:系统总线是CPU与存储器及桥接器之间传递信息的通道,AGP总线专门用与连接CPU与显示器适配器,PCI总线一般用于连接一些高速外设接口作为高速外设与CPU或内存交换信息的通道,而ISA总线一般用于连接一些非高速外设接口作为非高速外设与CPU或内存交换信息的通道。 9. 试说明计算机用户,计算机软件,计算机硬件三者的相互关系。 答:计算机用户,计算机软件系统,计算机硬件系统共同构成一个计算机应用系统,三者在该系统中处于三个不同的层次。计算机用户处于最高层,计算机软件处于中间层,计算机硬件系统处于最下层。在这里计算机用户是系统的主宰,他们通过软件系统与硬件系统发生关系,指挥计算机硬件完成指定的任务。即,计算机用户使用程序设计语言编制应用程序,在系统软件的干预下使用硬件系统进行工作。 10. 简述DOS操作系统各部分的作用及相互关系。 答:DOS操作系统包括3个模块:DOS-Shell(https://www.wendangku.net/doc/7f19288551.html,)、DOS-Kernel(https://www.wendangku.net/doc/7f19288551.html,)、DOS-BIOS(https://www.wendangku.net/doc/7f19288551.html,). DOS-Shell模块对用户输入的DOS命令行或应用程序行作出响应。即负责DOS命令的解释和
《汇编语言程序设计》(宋人杰主编)课后习题解答 第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为多少?若 段内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB
汇编语言程序设计答案2篇 汇编语言程序设计答案(一) 汇编语言是一种底层的计算机语言,通过程序设计来控制计算机 硬件的运行。它是计算机体系结构的基础,可以用来编写高效的程序,实现各种任务。下面是两个关于汇编语言程序设计的答案,帮助初学 者理解汇编语言的基本概念和编程技巧。 答案一: ```assembly mov ax, 5 mov bx, 6 add ax, bx ``` 这个程序的作用是将寄存器ax的值设置为5,寄存器bx的值设置为6,然后将ax和bx的值相加,结果保存在ax中。最后,ax的值为11。 答案二: ```assembly mov ax, 10 mov bx, 2 div bx ``` 这个程序的作用是将寄存器ax的值设置为10,寄存器bx的值设置为2,然后将ax和bx的值相除,商保存在ax中,余数保存在dx中。最后,ax的值为5,dx的值为0。 通过以上两个简单的答案,我们可以看到汇编语言的基本操作和 计算能力。编写汇编语言程序需要了解计算机的底层架构和指令集, 因为每种计算机体系结构都有不同的汇编语言。因此,学习汇编语言 需要掌握计算机组成原理和计算机体系结构的基本知识。 在编写汇编语言程序时,我们通常需要使用一些常见的指令,例
如mov(数据传送)、add(加法运算)、sub(减法运算)、mul(乘法运算)、div(除法运算)、jmp(跳转指令)等等。掌握这些常用指令和相应的语法规则是学习汇编语言的基础。 另外,汇编语言程序设计也需要学习如何使用寄存器和内存。寄存器是存储在CPU内部的非常快速的存储器,可以暂时存储数据和指令。CPU可以直接读取和写入寄存器中的数据。内存是存储在计算机主存储器中的大量数据和指令。CPU需要通过地址来访问内存中的数据和指令。 要编写高效的汇编语言程序,我们需要理解计算机的硬件原理和底层运行机制。了解汇编语言可以提供对程序的细粒度控制,对程序性能的优化有很大帮助。 总的来说,汇编语言程序设计是一项复杂而有趣的任务。掌握汇编语言可以让程序员对计算机的运行原理有更深入的理解,也能开发出更高效的程序。学习汇编语言需要耐心和熟练,但一旦掌握了它的技巧,将会有很多有趣的事情等待你去探索。 汇编语言程序设计答案(二) 汇编语言是一种底层的计算机语言,通过控制计算机硬件的运行来实现各种任务。在这里,我们将提供两个关于汇编语言程序设计的答案,帮助初学者理解汇编语言的基本概念和编程技巧。 答案一: ```assembly mov ax, 1 mov bx, 2 cmp ax, bx jg bigger jl smaller jmp end bigger: mov cx, ax jmp end
汇编语言程序设计课后习题答案习题2详解 习题2 2.1写出从汇编语言源程序的建立到产生可执行文件的步骤和上机操作命令。步骤: 1.编辑形成MY.ASM文件(MY为文件名) 2.汇编形成MY.OBJ文件 3.连接形成MYE某E文件 上机操作: 1.进入do命令行方式 2.在汇编语言的系统工作文件目录下,键入: EditMY.ASM按回车键编辑3.MASMMY按回车键汇编 4.LINKMY按回车键连接 5.MY按回车键运行 6.DEBUGMY.E某E按回车键进行调试。 2.2列表文件.LST实在什么阶段产生的?列表文件有哪些内容?列表文件是在汇编的时候产生的 执行MASM程序名程序名程序名按回车键就会在汇编的同时产生列表文件。 列表文件里有源程序和机器语言清单,指令和变量的偏移地址等等。 2.3写出定义一个代码段的语句,段名为MYPRG。 MYPRGSEGMENT ASSUMECS:MYPRGStart:
CodeendEndtart 2.4源程序中用什么语句来结束程序的执行?用什么语句来表示程序 的结束和指出程序执行的起点。MOVah,4ch INT21h结束程序的执行并返回到操作系统。Codeend程序结束 Endtart指出程序执行的起点 2.5汇编语言源程序的文件扩展名是什么?把他改为.e某e扩展名以后, 可以认为是可执行程序么? 答:源文件的扩展名为.ASM。改为.e某e后不可能是可执行程序, 源 文件只有经历汇编行成机器指令,然后连接才能形成可执行程序2.6 列出子目录C:\\YOUPRG下的扩张名为.ASM的所有文件,在D 盘根目录下建立一个子目录,并进子目录MYPRG,再把C:YOUPRG下 的文件YOU.ASM复制到D:\\MYPRG下。写出完成以上要求的DOS命令。答:C:\\YOUPRG>DIY某.ASMC:\\YOUPRG>D: D:\\MDMYPRGD:\\CDMYPRGD:\\MYPRG>COPYC:\\YOUPRG>YOU.ASMD:\\MYPRG 2.7 下图为DEBUG调入的可执行程序,回答以下问题:(1)程序的起始 物理地址是多少?结束地址是多少(2)CS寄存器的值是什么?(3)程 序的功能是什么? (4)写出查看DS:0处内容的DEBUG命令。(5)程序中2处的 int21指令执行后有什么结果?(6)如果要运行这个程序应该用什么
汇编语言程序设计(第二版) 钱晓捷习题答案 第二章〔01〕 2.1 〔1〕A*=1200h 〔2〕A*=0100h 〔3〕A*=4C2Ah 〔4〕A*=3412h 〔5〕A*=4C2Ah 〔6〕A*=7856h 〔7〕A*=65B7h 2.2(1)两操作数类型不匹配 (2) IP指令指针制止用户访问 (3)立即数不允许传给段存放器 (4)段存放器之间不允许传送 (5)两操作数类型不匹配 (6)目的操作数应为[ BP ] (7)源操作数应为 [B*+DI] (8)立即数不能作目的操作数 2.3 lea b*,table;获取table的首地址,B*=200H mov al,8;传送欲转换的数字,AL=8 *lat;转换为格雷码,AL=12H 2.4 堆栈是一种按“先进后出〞原则存取数据的存储区域。 堆栈的两种根本操作是压栈和出栈,对应的指令是PUSH和POP。 2.5 mov a*,8057h push a* mov a*,0f79h push a*
pop b* ;b*=0f79h pop [b*] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.7W=*+Y+24-Z 2.8 〔1〕ADD D*,B* 〔2〕ADD AL,[B*+SI] 〔3〕ADD [B*+0B2H],C* 〔4〕ADD WORD PTR [0520H],3412H 〔5〕ADD AL,0A0H 2.9;为了防止与操作数地址混淆,将题中*,Y,Z,V 字操作数改为A,B,C,D mov a*,*;a*=A imul Y;d*,a* = A*B (将操作数看作符号数,以下同〕 mov c*,a* mov b*,d*;b*,a* <-- d*,a* =A*B mov a*,Z;a* = C cwd;d*,a* =C〔扩展符号后为双字〕 add c*,a* adc b*,d*;b*,c* <-- b*,c*+d*,a*=A*B+C
汇编语言程序设计课后习题答案(第二版_沈美明)(无删减) 第一章 1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数: (1) 369 (2) 10000 (3) 4095 (4) 32767 答:(1) 369=1 0111 0001B=171H (2) 10000=10 0111 0001 0000B=2710H (3) 4095=1111 1111 1111B=FFFH (4) 32767=111 1111 1111 1111B=7FFFH 1.2 将下列二进制数转换为十六进制数和十进制数: (1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111 答:(1) 10 1101B=2DH=45 (2) 1000 0000B=80H=128 (3) 1111 1111 1111 1111B=FFFFH=65535 (4) 1111 1111B=FFH=255 1.3 将下列十六进制数转换为二进制数和十进制数: (1) FA (2) 5B (3) FFFE (4) 1234 答:(1) FAH=1111 1010B=250 (2) 5BH=101 1011B=91 (3) FFFEH=1111 1111 1111 1110B=65534 (4) 1234H=1 0010 0011 0100B=4660 1.4 完成下列十六进制数的运算,并转换为十进制数进行校核: (1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F 答:(1) 3A+B7H=F1H=241 (2) 1234+AFH=12E3H=4835 (3) ABCD-FEH=AACFH=43727 (4) 7AB×6FH=35325H=217893 1.5 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表 示其运算结果。 (1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76) 答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0 (2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0 (3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0 (4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1 (5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH; CF=0;OF=1 (6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=0 1.6 下列各数为十六进制表示的8位二进制数,请
汇编语言程序设计(钱晓捷)课后答案 汇编语言程序设计(第二版) 钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2(1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H
mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH 和POP。 2.5 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.7 W=X+Y+24-Z
2.8 (1)ADD DX,BX (2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX (4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax DI,转到above执行 cmp dx,di ja above ;=jnbe above (2)若AX > SI,转到greater执行 cmp ax,si jg greater ;=jnle greater (3)若CX = 0,转到zero执行 cmp cx,0 jcxz zero jz zero (4)若AX-SI产生溢出,转到overflow执行; cmp ax,di
新版汇编语言程序设计【课后习题答案】钱晓捷主编电子工业出版社第2章8086的指令系统〔全〕 第2章8086的指令系统 〔习题2.1〕DS=2000H、BX=0100H、SI=0002H,存储单元[20210H]~[20213H]依次存放12 34 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明以下每条指令执行完后AX 存放器的内容。 〔1〕mov ax,1200h 〔2〕mov ax,bx 〔3〕mov ax,[1200h] 〔4〕mov ax,[bx] 〔5〕mov ax,[bx+1100h] 〔6〕mov ax,[bx+si] 〔7〕mov ax,[bx][si+1100h] 〔解答〕 〔1〕AX=1200H 〔2〕AX=0100H 〔3〕AX=4C2AH ;偏移地址=bx=0100h 〔4〕AX=3412H ;偏移地址=bx=0100h 〔5〕AX=4C2AH ;偏移地址=bx+1100h=1200h 〔6〕AX=7856H ;偏移地址=bx+si=0100h+0002h=0102h 〔7〕AX=65B7H ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h 〔习题2.2〕指出以下指令的错误 〔1〕mov cx,dl 〔2〕mov ip,ax 〔3〕mov es,1234h 〔4〕mov es,ds 〔5〕mov al,300 〔6〕mov [sp],ax 〔7〕mov ax,bx+di 〔8〕mov 20h,ah 〔解答〕 〔1〕两操作数类型不匹配 〔2〕IP指令指针禁止用户访问 〔3〕立即数不允许传给段存放器 〔4〕段存放器之间不允许传送 〔5〕两操作数类型不匹配 〔6〕目的操作数应为[ SI ] 〔7〕源操作数应为[BX+DI] 〔8〕立即数不能作目的操作数 〔习题2.3〕数字0 ~ 9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、