微机原理与接口技术第2版牟琦主编习题答案 快乐健康理念.docx
- 文档编号:28706715
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:32
- 大小:34.32KB
微机原理与接口技术第2版牟琦主编习题答案 快乐健康理念.docx
《微机原理与接口技术第2版牟琦主编习题答案 快乐健康理念.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术第2版牟琦主编习题答案 快乐健康理念.docx(32页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术第2版牟琦主编习题答案快乐健康理念
习题一
1.将下列十进制数转换成二进制数、八进制数、十六进制数。
(4.75)10=(0100.11)2=(4.6)8=(4.C)16
(2.25)10=(10.01)2=(2.2)8=(2.8)16
(1.875)10=(1.111)2=(1.7)8=(1.E)16
2.将下列二进制数转换成十进制数。
(1011.011)2=(11.6)10
(1101.01011)2=(13.58)10
(111.001)2=(7.2)10
3.将下列十进制数转换成8421BCD码。
2006=(0010000000000110)BCD
123.456=(000100100011.010001010110)BCD
4.求下列带符号十进制数的8位基2码补码。
[+127]补=01111111
[-1]补=11111111
[-128]补=10000000
[+1]补=00000001
5.求下列带符号十进制数的16位基2码补码。
[+655]补=0000001010001111
[-1]补=111111*********0
[-3212]补=1111011101011100
[+100]补=0000000001100100
习题2
1.8086CPU在内部结构上由哪几部分组成?
各部分的功能是什么?
答:
8086CPU内部由两大独立功能部件构成,分别是执行部件和总线接口部件。
执行部件负责进行所有指令的解释和执行,同时管理有关的寄存器。
总线接口部件是CPU在存储器和I/O设备之间的接口部件,负责对全部引脚的操作。
2.简述8086CPU的寄存器组织。
答:
8086CPU内部共有14个16位寄存器,按用途可分为数据寄存器,段寄存器,地址指针与变址寄存器和控制寄存器。
数据寄存器包括累加器,基址寄存器,计数器,和数据寄存器。
段寄存器用来存放各分段的逻辑段基值,并指示当前正在使用的4个逻辑段。
地址指针与变址寄存器一般用来存放主存地址的段内偏移地址,用于参与地址运算。
控制寄存器包括指令寄存器和标识寄存器。
3.试述8086CPU标志寄存器各位的含义与作用。
答:
标志寄存器是16位的寄存器,但实际上8086只用到9位,其中的6位是状态标识位,3位是控制标识位。
状态标志位分别是CF,PF,AF,ZF,SF,和OF;控制标志位包括DF,IF,TF。
CF:
进位标志位。
算数运算指令执行后,若运算结果的最高位产生进位或借位,则CF=1,否则CF=0。
PF:
奇偶标志位。
反应计算结果中1的个数是偶数还是奇数。
若运算结果的低8位中含有偶数个1,则PF=1;否则PF=0.
AF:
辅助进位标志。
算数运算指令执行后,若运算结果的低4位向高4位产生进位或借位,则AF=1;否则AF=0.
ZF:
零标志位。
若指令运算结果为0,则ZF=1;否则ZF=0。
SF:
符号标志位。
它与运算结果最高位相同。
OF:
溢出标志位。
当补码运算有溢出时,OF=1;否则OF=0。
DF:
方向标志位。
用于串操作指令,指令字符串处理时的方向。
IF:
中断允许标志位。
用来控制8086是否允许接收外部中断请求。
TF:
单步标志位。
它是为调试程序而设定的陷阱控制位。
4.8086CPU状态标志和控制标志有何不同?
程序中是怎样利用这两类标识的?
8086的状态标志和控制标识分别有哪些?
答:
状态标志位反应了当前运算和操作结果的状态条件,可作为程序控制转移与否的依据。
它们分别是CF,PF,AF,ZF,SF,和OF。
控制标志位用来控制CPU的操作,由指令进行置位和复位,控制标志位包括DF,IF,TF。
5.将10011100和11100101相加后,标识寄存器中CF,PF,AF,ZF,SF,OF各为何值?
答:
CF=1,PF=1,AF=1,ZF=0,SF=1,OF=0
6.什么是存储器的物理地址和逻辑地址?
在8086系统中,如何由逻辑地址计算物理地址?
答:
逻辑地址是思维性的表示,由段地址和偏移地址联合表示的地址类型叫逻辑地址。
物理地址是真实存在的唯一地址,指的是存储器中各个单元的单元号。
在8086系统中,物理地址=段地址×10H+偏移地址
7.段寄存器CS=1200H,指令指针寄存器IP=4000H,此时,指令的物理地址为多少?
指向这一地址的CS指和IP值是唯一的吗?
答:
此指令的物理地址=1200H×10H+4000H=16000H并且指向这一物理地址的CS值和IP值并不是唯一的。
8.在8086系统中,逻辑地址FFFF:
0001,00A2:
37F和B800:
173F的物理地址分别是多少?
答:
逻辑地址
FFFF:
0001
00A2:
3TF
B800:
173F
物理地址
FFFF1H
00D9FH
B973FH
9.在8086系统中,从物理地址388H开始顺序存放下列3个双字节的数据651AH,D761H和007BH,请问物理地址388H,389H,38AH,38BH,38CH和38DH6个单元中分别是什么数据?
答:
(388H)=1AH,(389H)=65H,(38AH)=61H,(38BH)=DTH,(38CH)=7BH,(38DH)=00H
习题3
1.假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据变量VAL的偏移地址为0050H,请指出下列指令原操作数是什么寻址方式,其物理地址是多少?
(1)MOVAX,0ABH
(2)MOVAX,[100H]
(3)MOVAX,VAL(4)MOVBX,[SI]
(5)MOVAL,VAL[BX](6)MOVCL,[BX][SI]
(7)MOVVAL[SI],BX(8)MOV[BP][SI],100
答:
(1)立即数寻址,物理地址:
无
(2)直接寻址,物理地址=2000H×10H+100H=20100H
(3)直接寻址,物理地址=2000H×10H+0050H=20050H
(4)寄存器间接寻址,PA=2000H×10H+00A0=200A0H
(5)相对寄存器寻址,PA=2000H×10H+(0050+0100H)=20150H
(6)基址加变寻址,PA=2000H×10H+(0100H+00A0H)=201A0H
(7)寄存器寻址,无PA
(8)立即数寻址,无PA
2.已知(SS)=0FFA0H,(SP)=00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP内容变化的过程示意图。
答:
“8057H”进栈,则SP自动从00B0H指向00B2H,“0F79H”进栈,则SP自动从00B2H指向00B4H;执行一条POP指令,“0F79H”被弹出栈,SP从00B4H指向00B2H。
图略。
3.设有关寄存器及存储单元的内容如下:
(DS)=2000H,(BX)=0100H,(AX)=1200H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H.
试说明下列各条指令单独执行后相关寄存器或存储单元的内容。
(1)MOVAX,1800H
(2)MOVAX,BX
(3)MOVBX,[1200H](4)MOVDX,1100[BX]
(5)MOV[BX][SI],AL(6)MOVAX,1100[BX][SI]
答:
(1)(AX)=1800H
(2)(AX)=0100H(3)(BX)=4C2AH
(4)(DX)=4C2AH(5)(20102H)=00H(6)(AX)=65B7H
4.写出实现下列计算的指令序列。
(1)Z=W+(X+Z)
(2)Z=W-(X+6)-(R+9)
答:
(1)MOVAX,Z
ADDAX,X
ADDAX,W
MOVZ,AX
(2)MOVAX,W
ADDX,6
SUBAX,X
ADDR,9
SUBAX,R
MOVZ,AX
5.若在数据段中从字节变量TABLE相应的单元开始存放了0~15的平方值,试写出包含XLAT指令的指令序列查找N(0~15)中的某个平方数。
答:
LEABX,TABLE
MOVAL,CL
XLAT
6.写出实现下列计算的指令序列。
(1)Z=(W*X)/(R+6)
(2)Z=((W-X)/5*Y)*2
答:
(1)MOVAX,W
IMULX
ADDR,6
IDIVR
MOVZ,AX
(2)MOVAX,W
SUBAX,X
MOVBL,5
IDIVBL
CBW
IMULY
MOVBX,2
IMULBX
MOVZ,AX
7.假定(DX)=1100100110111001B,CL=3,CF=1,试确定下列各条指令单独执行后DX的值。
(1)SHRDX,1
(2)SHLDL,1(3)SALDH,1(4)SARDX,CL
(5)RORDX,CL(6)ROLDL,CL(7)RCRDL,1(8)RCLDX,CL
答:
(1)(DX)=0110010011011100B
(2)(DX)=1100100101110010B
(3)(DX)=1001001010111001B(4)(DX)=1111100100110111B
(5)(DX)=0011100100110111B(6)(DX)=0100110111001110B
(7)(DX)=1110010011011100B(8)(DX)=1001001101110011B
8.已知程序段如下:
MOVAX,1234H
MOVCL,4
ROLAX,CL
DECAX
MOVCX,4
MULCX
INT20H
试问:
(1)每条指令执行后,AX寄存器的内容是什么?
(2)每条指令执行后,CF,SF及ZF的值分别是什么?
(3)程序运行结束后,AX及DX寄存器的值为多少?
答:
MOVAX,1234H(AX)=1234H,CF=0,SF=0,ZF=0
MOVCL,4
ROLAX,CL(AX)=2341H,CF=1,SF=0,ZF=0
DECAX(AX)=2340H,CF=1,SF=0,ZF=0
MOVCX,4
MULLCX(AX)=8D00H,CF=0,SF=1,ZF=0
INT20H
结束后,(DX)=0000H,(AX)=8000H
9.试分析下列程序段:
ADDAX,BX
JNCL2
SUBAX,BX
JNCL3
JMPSHORTL5
如果AX,BX的内容给定如下:
AXBX
(1)14C6H80DCH
(2)B568H54B7H
问该程序在上述情况下执行后,程序转向何处。
答:
(1)转到L2处
(2)转到L3处
习题4
1.下列语句在存储器中分别为变量分配多少字节空间?
并画出存储空间的分配图。
VAR1DB10,2
VAR2DW5DUP(?
),0
VAR3DB‘HOWAREYOU?
’,3DUP(1,2)
VAR4DD-1,1,0
答:
字节空间:
VAR1:
2;
VAR2:
12;
VAR3:
13;
VAR4:
8。
存储空间的分配图:
2.假定VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处。
(1)ADDVAR1,VAR2
(2)SUBAL,VAR1
(3)JMPLAB[CX](4)JNZVAR1
(5)MOV[1000H],100(6)SHLAL,4
答:
(1)在算术运算指令中,两个操作数不能同时为存储器寻址方式
(2)AL为字节,VAR1为字变量,字长不相等;
(3)寄存器相对寻址方式,只能使用基址或变址寄存器,不能使用CX寄存器。
(4)转向地址应为标号,不能是变量;
(5)目的操作数的类型不确定;
(6)SHL指令中,当所移位数超过1时,必须用CL取代所移位数。
3.对于下面的符号定义,指出下列指令的错误。
A1DB?
A2DB10
K1EQU1024
(1)MOVK1,AX
(2)MOVA1,AX
(3)CMPA1,A2(4)K1EQU2048
答:
(1)K1为常量,不能用MOV指令赋值;
(2)A1为字节,AX为字变量,不匹配;
(3)A1未定义,无法做比较指令;
(4)K1重新赋值前,必须用PURGE释放。
4.数据定义语句如下所示:
FIRSTDB90H,5FH,6EH,69H
SECONDDB5DUP(?
)
THIRDDB5DUP(?
)
自FIRST单元开始存放的是一个四字节的十六进制数(低位字节在前),要求:
编一段程序将这个数左移两位后存放到自SECOND开始的单元,右移两位后存放到自THIRD开始的单元。
(注意保留移出部分)
答:
DATASEGMENT
FIRSTDB90H,5FH,6EH,69H
SECONDDB5DUP(?
)
THIRDDB5DUP(?
)
FORTHDB4DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,FIRST
LEADI,SECOND
MOVCX,2
CLC
;左移2位
MOVAX,WORDPTR[SI];AX=5F90H为低十六位数据
INCSI
INCSI
MOVDX,WORDPTR[SI];DX=696EH为高十六位数据
PUSHDX;保存原有的高十六位数据
PUSHAX;保存原有的低十六位数据
ROLDX,CL
;将高位数据不带进位循环左移两位,即高2位数据在DL的低2位
ANDDL,03H;让DL中仅保存移出的高2位数据
MOV[DI+4],DL;将移出的高2位数据放入SECOND中的最高单元中
ROLAX,CL
;将低位数据不带进位循环左移两位,即AX的高2位在AL的低2位
ANDAL,03H;让AL中仅保存移出的AX高2位数据
MOVBL,AL;将AL中的数据放入BL中保存
POPAX;弹出原有的低十六位数据
POPDX;弹出原有的高十六位数据
SHLDX,CL;将高位数据算术逻辑左移2位
SHLAX,CL;将低位数据算术逻辑左移2位
ORDL,BL;将AX中移出的高2位数据放入DX的低2位
MOVWORDPTR[DI],AX
MOVWORDPTR[DI+2],DX
;右移2位
LEASI,FIRST
LEADI,THIRD
MOVCX,2
CLC
MOVAX,WORDPTR[SI];AX=5F90H为低十六位数据
INCSI
INCSI
MOVDX,WORDPTR[SI];DX=696EH为高十六位数据
PUSHDX;保存原有的高十六位数据
PUSHAX;保存原有的低十六位数据
RORAX,CL;将低位数据不带进位循环右移两位,即低2位数据在AH的高2位
ANDAH,0C0H;让AH中仅保存移出的低2位数据
PUSHCX
MOVCX,6
SHRAH,CL
POPCX
MOV[DI],AH;将移出的低2位数据放入THIRD中的最低单元中
RORDX,CL
;将低位数据不带进位循环左移两位,即AX的高2位在AL的低2位
ANDDH,0C0H;让DH中仅保存移出的DX低2位数据
MOVBL,DH;将DH中的数据放入BL中保存
POPAX;弹出原有的低十六位数据
POPDX;弹出原有的高十六位数据
SHRDX,CL;将高位数据算术逻辑左移2位
SHRAX,CL;将低位数据算术逻辑左移2位
ORAH,BL;将DX中移出的低2位数据放入AX的高2位
MOVWORDPTR[DI+1],AX
MOVWORDPTR[DI+3],DX
;求补
LEASI,FIRST
LEADI,FORTH
MOVAX,WORDPTR[SI];AX=5F90H为低十六位数据
INCSI
INCSI
MOVDX,WORDPTR[SI];DX=696EH为高十六位数据
XORAX,0FFFFH;将低十六位取反
XORDX,OFFFFH;将高十六位按位取反
CLC
ADDAX,01H;低位加1,即可为原数的求补
ADCDX,0;高位加低位加法时的进位
MOVWORDPTR[DI],AX
MOVWORDPTR[DI+2],DX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
5.试编程序将内存从40000H到4BFFFH的每个单元中均写入55H,并再逐个单元读出比较,看写入的与读出的是否一致。
若全对,则将AL置7EH;只要有错,则将AL置81H。
答:
DATASEGMENT
DA1DB55H
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,4000H
MOVDS,AX
MOVCX,0C000H
MOVBX,0000H
MOVAH,55H
NEXT1:
MOVbyteptr[BX],AH
INCBX
LOOPNEXT1
MOVBX,0000H
MOVCX,0C000H
MOVAL,81H
NEXT2:
MOVAH,[BX]
CMPAH,55H
JNZEXIT
INCBX
LOOPNEXT2
MOVAL,7EH
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
6.在当前数据段4000H开始的128个单元中存放一组数据,试编程序将它们顺序搬移到A000H开始的顺序128个单元中,并将两个数据块逐个单元进行比较;若有错将BL置00H;全对则将BL置FFH,试编程序。
答:
DATASEGMENT
ORG400H
DA1DB128DUP(?
)
ORG0A00H
DA2DB128DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,DA1
LEADI,DA2
MOVCX,128
AGAIN:
MOVAL,[SI]
INCSI
INCDI
LOOPAGAIN
LEASI,DA1
LEADI,DA2
MOVCX,128
NEXT:
MOVAL,[SI]
MOVBL,[DI]
CMPAL,BL
JNZERROR
INCSI
INCDI
MOVBL,0FFH
LOOPNEXT
JMPEXIT
ERROR:
MOVBL,00H
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
7.设变量单元A、B、C存放有3个数,若3个数都不为零,则求3个数的和,存放在D中;若有一个为零,则将其余两个也清零,试编写程序。
答:
DATASEGMENT
ADB?
BDB?
CDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
CMPA,00H
JNZLP1
MOVB,0
MOVC,0
JMPLP4
LP1:
CMPB,00H
JNZLP2
MOVA,0
MOVC,0
JMPLP4
LP2:
CMPC,00H
JNZLP3
MOVA,0
MOVB,0
JMPLP4
LP3:
MOVAL,A
ADDAL,B
ADDAL,C
MOVAH,4CH
LP4:
INT21H
CODEENDS
ENDSTART
8.有一个100个字节的数据表,表内元素已按从大到小的顺序排列好,现给定一元素,试编程序在表内查找,若表内已有此元素,则结束;否则,按顺序将此元素插入表中适当的位置,并修改表长。
答:
DATASEGMENT
BUFFDB100DUP(?
)
DA1DB(?
)
LENGTHDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,0
MOVAL,DA1
MOVCX,100
FIND0:
CMPBUFF[SI],AL
JZEXIT
INCSI
LOOPFIND0
MOVDI,99
MOVSI,0
COMPARE:
CMPBUFF[DI],AL
JGINSERT
MOVBL,BUFF[DI]
MOVBUFF[DI+1],BL
DECDI
CMPDI,SI
JNLCOMPARE
JMPEXIT
INSERT:
MOVBUFF[DI+1],AL
MOVLENGTH,101
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
9.内存中以FIRST和SECOND开始的单元中分别存放着两个16位组合的十进制(BCD码)数,低位在前。
编程序求这两个数的组合的十进制和,并存到以THIRD开始的单元。
答:
DATASEGMENT
FIRSTDD34341212H
SECONDDD78785656H
THIRDDB?
?
?
?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DAT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与接口技术第2版牟琦主编习题答案 快乐健康理念 微机 原理 接口 技术 版牟琦 主编 习题 答案 快乐 健康 理念
![提示](https://static.bdocx.com/images/bang_tan.gif)