微机原理第三章习题答案
- 格式:pdf
- 大小:1.16 MB
- 文档页数:4
3.1 简要分析8086的指令格式由哪些部分组成,什么是操作码?什么是操作数?寻址和寻址方式的含义是什么?8086指令系统有哪些寻址方式?【解答】8086的指令格式由操作码和操作数字段组成。
操作码:要完成的操作。
操作数:参与操作的对象。
寻址:寻找操作数或操作数地址的过程。
寻址方式:指令中给出的找到操作数或操作数地址采用的方式。
8086指令系统的寻址方式主要有立即数寻址、寄存器寻址、存储器寻址和I/O端口寻址。
其中,存储器寻址可进一步分为直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址;I/O端口指令IN和OUT使用的端口寻址方式有直接寻址和间接寻址。
3.2 设(DS)=2000H,(ES)= 2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?(1) MOV AX,21H (2) MOV AX,BX (3) MOV AX,[1000H](4) MOV AX,VAL (5) MOV AX,[BX] (6) MOV AX,ES:[BX](7) MOV AX,[BP] (8) MOV AX,[SI] (9) MOV AX,[BX+10](10) MOV AX,VAL[BX] (11) MOV AX,[BX][SI] (12) MOV AX,VAL[BX][SI]【解答】(1)MOV AX,21H立即寻址,源操作数直接放在指令中(2)MOV AX,BX寄存器寻址,源操作数放在寄存器BX中(3)MOV AX,[1000H]直接寻址,EA = 1000H,PA =(DS)×10H+EA = 2000H×10H+1000H = 21000H(4)MOV AX,VAL直接寻址,EA = [V AL] = 0050H,PA =(DS)×10H+EA = 2000H×10H+0050H = 20050H(5)MOV AX,[BX]寄存器间接寻址,EA =(BX)= 0100H,PA =(DS)×10H+EA = 2000H×10H+0100H = 20100H(6)MOV AX,ES:[BX]寄存器间接寻址,EA =(BX)= 0100H,PA =(ES)×10H+EA = 2100H×10H+0100H = 21100H(7)MOV AX,[BP]寄存器间接寻址,EA =(BP)= 0010H,PA =(SS)×10H+EA = 1500H×10H+0010H = 15010H(8)MOV AX,[SI]寄存器间接寻址,EA =(SI)= 00A0H,PA =(DS)×10H+EA = 2000H×10H+00A0H = 200A0H(9)MOV AX,[BX+10]相对寄存器寻址,EA =(BX)+10D = 0100H+000AH= 010AH,PA =(DS)×10H+EA = 2000H×10H+010AH = 2010AH(10)MOV AX,VAL[BX]相对寄存器寻址,EA =(BX)+[V AL]= 0100H+0050H= 0150H,PA =(DS)×10H+EA = 2000H×10H+0150H = 20150H(11)MOV AX,[BX][SI]基址变址寻址,EA = (BX)+(SI)= 0100H+00A0H = 01A0H,PA = (DS)×10H +EA = 2000H×10H+01A0H = 201A0H(12)MOV AX,VAL[BX][SI]相对基址变址寻址,EA = (BX)+(SI)+[V AL]= 0100H+00A0H+0050H = 01F0H,PA =(DS)×10H+EA = 2000H×10H+01F0H = 201F0H3.3 给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) = 32H,(20101) = 51H,(20102) = 26H,(20103) = 83H,(21200) = 1AH,(21201) = B6H,(21202) = D1H,(21203) = 29H。
第三章习题与思考题典型例题解析例3-1高速缓冲存储器(Cache)的存取速度()。
A.比内存慢,比外存快B.比内存慢,比内部寄存器快C. 比内存快,比内部寄存器慢D. 比内存快,比内部寄存器快例3-2 在存储器连线时,选片控制采用()方式时,不仅存在()问题,而且所分配的地址也是不同的。
A.全译码B.线选法C.地址重迭D.地址浮动例3-3 某计算机的主存为3KB,则内存地址寄存器需()位就足够了。
A.10 B.11 C.12 D.13例3-4 在微机中,CPU访问各类存储器的频率由高到低的次序为()。
A.高速缓存、内存、磁盘B.内存、磁盘、高速缓存C.磁盘、内存、高速缓存D.磁盘、高速缓存、内存答案:A分析:内存存放当前运行的程序和数据,访问频率高于磁盘,C和D不合题意;在采用Cache和内存的存储体系结构中,CPU总是先访问Cache,只有未命中时才访问内存,B也不对。
所以选A。
例3-5 常用的虚拟存储器寻址系统由()两级存储器组成。
A.主存一外存B.Cache一主存C.Cache—外存D.Cache——Cache答案:A分析:虚拟存储器由存储器管理机制以及一个大容量的外存支持。
它是在存储体系层次结构基础上,通过存储器管理部件MMU,在外存和主存之间进行虚拟地址和实地址间的变换的。
例3-6 下面的说法中,正确的是()。
A.EPROM是不能改写的B.EPROM是可改写的,所以也是一种读写存储器C.EPROM只能改写一次D.EPROM是可改写的,但它不能作为读写存储器答案:D分析:EPROM是紫外线可擦写可编程ROM,可反复多次改写,所以A和C不正确;EPROM的编程需外加编程电压,不能在线随机改写,因而EPROM不是随机读写存储器,所以B也不正确。
例3-7 一个具有24根地址线的微机系统,装有16KBROM、480KB RAM和100MB的硬盘,说明其内存容量为()。
A.496KB B.16MB C.100.496MB D. 480KB答案:A分析:内存由ROM和RAM组成,答案C含硬盘容量不合题意;存储器总容量与实际装机容量是不同概念,此题答案B、D也不合题意。
第3章3.1:汇编语言有什么特点解:汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码,采用标识符号表示指令操作数,可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序3.2编写汇编语言源程序时,一般的组成原则是什么?解:(1)完整的汇编语言源程序由段组成(2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列(3)需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点(4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内(5)通常,程序还需要一个堆栈段3.3 MODEL伪指令是简化段定义源程序格式中必不可少的语句,它设计了哪7种存储模式?各用于创建什么性质的程序?解:3.4如何规定一个程序执行的开始位置,主程序执行结束应该如何返回DOS,源程序在何处停止汇编过程?解:开始位置:用标号指明返回DOS:利用DOS功能调用的4CH子功能来实现汇编停止:执行到一条END伪指令时,停止汇编3.5逻辑段具有哪些属性?解:段定位、段组合和段类型。
3.6给出采用一个源程序格式书写的例题3.1源程序例题3.1:创建一个在屏幕上显示一段信息的程序……解:stack segment stackdb 1024(0)stack endsdata segmentstring db 'Hello,Assembly!',0dH,0aH,‘$’data endscode segment 'code'assume cs:code,ds:data,ss:stackstart: mov dx,offset stringmov ah,9int 21hcode endsend start3.7DOS支持哪两种可执行程序结构,编写这两种程序时需要注意什么?解:(1). EXE程序程序可以有多个代码段和多个数据段,程序长度可以超过64KB通常生成EXE结构的可执行程序(2). COM程序只有一个逻辑段,程序长度不超过64KB需要满足一定条件才能生成COM结构的可执行程序(MASM 6.x需要采用TINY模式)3.8举例说明等价“EUQ”伪指令和等号“=”伪指令的用途解:符号定义伪指令有“等价EQU”和“等号=”:符号名 EQU 数值表达式符号名 EQU <字符串>符号名=数值表达式EQU用于数值等价时不能重复定义符号名,但“=”允许有重复赋值。
第3章指令系统习题解答1. 若DS=3000H,BP=2000H,SI=1000H,[32000H]=00H,[32001H]=40H,SS=3000H,[31000H]=20H,[31001H]=60H,[33000H]=50H,[33001H]=60H,说明下列各条指令执行后,AX中的内容是什么?并说明各条指令中源操作数的寻址方式。
(1) MOV AX,DS (2) MOV AX,[2000H](3) MOV AX,[SI] (4) MOV AX,[BP](5) MOV AX,[BP+SI]【解】(1)AX=3000H 寄存器寻址(2)AX=4000H 直接寻址(3)AX=6020H 寄存器间接寻址(4)AX=4000H 寄存器间接寻址(5)AX=6020H 基址加变址寻址2. 指出下列指令中的非法指令。
(1) MOV BX,AL (2) MOV CS,2000H(3) PUSH 4567H (4) XCHG VAR1,VAR2(5) ADD AL,148H (6) MOV DS,2000H(7) MOV BH,SI (8) SUB 38H,AL【解】非法指令:(1) MOV BX,AL BX和AL的长度不一致(2) MOV CS,2000H CS段寄存器不能作目的操作数(3) PUSH 4567H 只能将寄存器或存储单元的内容压入堆栈,不能是立即数(4) XCHG VAR1,V AR2 两个存储单元之间不能直接交换数据(5) ADD AL,148H 运算溢出(6) MOV DS,2000H 立即数不能直接传送给DS段寄存器(7) MOV BH,SI BH和SI的长度不一致(8) SUB 38H,AL 目的操作数不能是立即数3. 若SP=2000H,AX=3355H,BX=4466H,试指出下列指令或程序段执行后有关寄存器的内容。
(1) PUSH AX执行后AX=?,SP=?(2) PUSH AXPUSH BXPOP DXPOP CX执行后AX=?,CX=?,DX=?,SP=?【解】(1) 执行后AX=3355H,SP=1FFEH(2) 执行后AX=3355H,CX=3355H,DX=4466H,SP=2000H4. 请按下面的要求写出相应的汇编指令或指令序列。
第3章 8086CPU指令系统1.写出完成下列要求的变量定义语句:(1)在变量var1中保存6个字变量:4512H,4512,-1,100/3,10H,65530;(2)在变量var2中保存字符串:’BYTE’, ’word’, ’WORD’;(3)在缓冲区buf1中留出100个字节的存储空间;(4)在缓冲区buf2中,保存5个字节的55H,再保存10个字节的240,并将这一过程重复7次;(5)在变量var3中保存缓冲区buf1的长度;(6)在变量pointer中保存变量var1和缓冲区buf1的偏移地址。
解:var1 DW 4512H,4512,-1,100/3,10H,65530var2 DB ’BYTE’,’word’,’WORD’buf1 DB 100 DUP(?)buf2 DB 7 DUP(5 DUP(55H),10 DUP(240))var3 DB LENGTH buf1pointer DW var1,buf1 (或者pointer DW OFFSET var1,OFFSET buf1)2.设变量var1的逻辑地址为0100:0000,画出下列语句定义的变量的存储分配图:var1 DB 12,-12,20/6,4 DUP(0,55H)var2 DB ‘Assemble’var3 DW ‘AB’, ‘cd’, ‘E’var4 DW var2var5 DD var2解:3.指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因(设VAR1, VAR2为字变量, L1为标号):(1)MOV SI,100 (2)MOV BX,VAR1[SI](3)MOV AX, [BX] (4)MOV AL, [DX](5)MOV BP, AL (6)MOV VAR1, VAR2(7)MOV CS, AX (8)MOV DS, 0100H(9)MOV [BX][SI], 1 (10)MOV AX, VAR1+VAR2(11)ADD AX, LENGTH VAR1 (12)OR BL, TYPE VAR2(13)SUB [DI], 78H (14)MOVS VAR1, VAR2(15)PUSH 100H (16)POP CS(17)XCHG AX, ES (18)MOV DS, CS(19)JMP L1+5 (20)DIV AX, 10(21)SHL BL, 2 (22)MOV AL, 15+23(23)MUL CX (24)XCHG CL, [SI](25)ADC CS:[0100], AH (26)SBB VAR1-5,154解:(1)MOV SI,100 正确。
第三章课后题答案注:存储单元或寄存器名用“()”,表示存储单元或寄存器的内容寄存器名用“[]”,表示寄存器内容为一个内存单元的地址习题答案:1、指出指令中源操作数的寻址方式1)立即数寻址2)直接寻址3)寄存器间接寻址4)寄存器相对寻址5)寄存器寻址6)基址变址相对寻址7)寄存器寻址8)段内间接寻址9)端口间接寻址10)寄存器相对寻址11)立即数寻址12)立即数寻址2、指令是否正确,若不正确说明原因1)错误,立即数不能直接传送到段寄存器,可以用MOV AX,0100H MOVDS,AX两条指令实现2)错误,数据类型不匹配源操作数字节操作,目的操作数字操作数3)正确4)错误,端口地址>0FFH时,必须使用端口间接寻址方式。
可以用下两条指令实现:MOV DX,310H OUT DX,AL5)正确6)正确7)错误,没有同时用两个变址寄存器寻址内存单元的指令。
8)正确允许段超越9)错误,数据类型不匹配10)错误,BP不能作为间址寄存器11)正确12)错误,立即数不能作为目的操作数13)错误,堆栈指令不能用立即数14)错误,不能在两个内存单元之间直接用MOV指令传送数据。
15)错误,数据类型不匹配16)正确17)错误,CS段寄存器不能做目的操作数18)错误,没有指明操作数类型是字还是字节19)错误,端口间接寻址时,间址寄存器只能是DX不能是其它寄存器20)错误,移位指令和循环指令当操作次数大于1时,只能用CL存储操作次数。
21)错误,交换指令中不能用段寄存器22)错误,堆栈操作只能是字类型3、写出物理地址的计算表达式1)PA= (DS) * 10H + (DI)2)PA= (DS) * 10H + (BX) + (SI)3)PA= (DS) * 10H + (BX) + (DI) +54)PA= (ES) * 10H + (BX)5)PA= (DS) * 10H + 1000H6)PA= (DS) * 10H + (BX)+(DI)+2000H7)PA= (SS) * 10H + (BP)+(SI)8)PA= (DS) * 10H + (DI)4、计算物理地址1)PA= (DS) * 10H + (BX)=30000H+2000H=32000H2)PA= (DS) * 10H + (BX)+(SI)+1000H=30000H+2000H+0100H+1000H=33100H3)PA= (DS) * 10H + (BX)+(SI)=32100H4)PA= (ES) * 10H + (BX)=40000H+2000H=42000H5、代码段可寻址的空间范围:0E0000H~0EFFFFH6、(SP)=1FFEH,(AX)=5000H, (BX)=5000H7、两条指令的相同点:同为减法指令,均执行(AX)-09H操作;不同点:SUB指令有返回结果,而CMP指令没有返回结果。
微机原理第3章习题(答案)1. 下列各条指令是否有错?如果有,请指出错误之处并改正(1)MOV DS,1000H(2)MOV [100],23H(3)ADD AX,[BX+BP+6](4)PUSH DL(5)IN AX,[3FH](6)OUT 3FFH,AL(7)LES SS,[SI](8)POP [AX](9)IMUL 4CH(10)SHL BX,5(11)INT 300(12)XCHG DX,0FFFH答:(1)错误。
不允许直接向段寄存器送立即数,可改为:MOV AX,1000HMOVDS,AX(2)错误。
该指令在语法上是对的,即可以把一个立即数送入一个存储单元;但是如果考虑实际编译,则第一操作数前应加上BYTE PTR 或WORD PTR 说明,否则汇编程序会因不能确定操作数长度而指示出错。
可改为:MOV BYTE PTR [100],23H(3)错误。
不能同时使用两个基址寄存器BX、BP 进行间接寻址,可改为:ADD AX,[BX+DI+6] (4)错误。
堆栈操作应以字为单位进行,而DL 是一个字节。
可改为:PUSH DX(5)错误。
在输入/输出指令中,8 位端口地址应直接写在操作数处。
可改为:IN AX,3FH(6)错误。
端口地址3FFH 已超出8 位二进制表示范围,16 位端口地址应用DX。
可改为:MOV DX,3FFH OUT DX,AL(7)错误。
LES 指令的目操作数应该是通用寄存器,不能是段寄存器。
可改为:LES BX,[SI](8)错误。
AX 不能用于间接寻址,间接寻址只能用BX、BP、SI、DI 四个寄存器之一。
可改为:POP [BX](9)错误。
立即数不能做乘法指令的操作数,可改为:MOV BL,4CH IMUL BL(10)错误。
当逻辑移位的次数大于1时,应该用CL指示次数。
可改为MOV CL,5 SHL BX,CL (11)错误。
操作数300 > 255,已超出有效的中断类型码范围。
3.1 8086/8088 CPU的地址总线有多少位?其寻址范围是多少?答:20条,寻址范围:0~220-1 (1MB)3.2 8086/8088 CPU分为哪两个部分?各部分主要由什么组成?答: BIU(Bus Interface Unit总线接口单元)、EU(Execution Unit执行单元)3.4 8086/8088 CPU中有几个通用寄存器?有几个变址寄存器?有几个指针寄存器?通常哪几个寄存器也可作为地址寄存器使用?答:八个通用寄存器:AX、BX、CX、DX、SP、BP、SI、DI;三个指针寄存器:IP、SP、BP。
指令指针IP总是指向下一条将要执行的指令在代码段中的偏移地址。
当堆栈中有压入的数据时,堆栈指针SP总是指向栈顶;两个间址指针寄存器:源变址SI和目的变址寄存器DI;在寄存器间接寻址方式中,只有BX、BP、SI、DI能充当地址寄存器。
3.8 在8086/8088 CPU工作在最小模式时,(1)当CPU访问存储器时,要利用哪些信号?(2)当CPU访问外设接口时,要利用哪些信号?(3)当HOLD有效并得到响应时,CPU的哪些信号置高阻?答:当MN/MX为高电平时工作于最小模式、否则为最大模式。
(1)地址线信号、数据线信号、RD、WR、M/IO、DEN、ALE、BHE、DT/R。
(2)地址线信号、数据线信号、RD、WR、M/IO、READY、DEN、ALE、DEN。
(3)DEN、DT/R3.9 当在8086/8088 CPU工作在最大模式时,(1)S—2、S—1、S—0可以表示CPU的哪些状态?(2)CPU的RQ——/GT——信号的作用?答:(1)(2)多处理器的总线控制信号。
共享总线的其他主控者通过该信号申请总线控制权和获得总线授予权。
3.10 试求出下面运算后各个标志位的值,并说明进位标志和溢出标志的区别? 1278H+3469H答:0 0 0 1 0 0 1 0 0 1 1 1 1 0 0 0+ 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1= 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1SF=0、CF=0、ZF=0、PF=1、AF=1、OF=03.12什么是逻辑地址?什么是物理地址?它们之间有什么联系?各用在何处?答:逻辑地址:在存储器寻址中,程序员在程序中指定的地址称之为逻辑地址。
第三章习题集二.选择题(每小题1分,共15分)1. 逻辑地址1000:2000对应的物理地址为( B )。
A、1200HB、12000HC、2100HD、21000H2. 下面哪个寄存器使用时的默认段寄存器为SS( C )。
A、AXB、BXC、SPD、SI3. 当使用BP寄存器作基址寻址时,若无指定段替换,则内定在( B )段内寻址。
A.程序B.堆栈C.数据D.附加4.在下面四组寄存器中,第 D 组都可用于对存储器间接寻址方式的寄存器。
A. AX,BX,CX,IP;B. BX,SP,DX,SIC. IP,SP,BP,AXD. BP,BX,SI,DI5. 含有立即数的指令中,该立即数被存放在 A 。
A. 累加器中B. 指令操作码后的内存单元中C. 指令操作码前的内存单元中D. 由该立即数所指定的内存单元中6. 用段基值及偏移量来指明内存单元地址的方式称为( C )。
A、有效地址B、物理地址C、逻辑地址D、相对地址7. 已知物理地址为0FFFF0H,且段内偏移量为0B800H,若对应的段基地址放在DS中,则DS=( B )。
A、0FFFFHB、0F47FHC、2032HD、0F000H8. 含有立即数的指令中,该立即数被存放在 B 。
A. 累加器中B. 指令操作码后的内存单元中C. 指令操作码前的内存单元中D. 由该立即数所指定的内存单元中9.寄存器间接寻址方式中,操作数在 C 中。
A. 通用寄存器B. 堆栈C. 存储单元D. 段寄存器10.下列指令中,有语法错误的指令是(B D)。
A. MOV AX,[1000H]B. LEA AL,1000HC. MOV [1000H],ALD. MOV 1000H,AX11. 下列指令语法有错的是:CA. MOV AX,1000HB. MOV AX,BXC. MOV [AX],[1000H]D. MOV AX,[1000H]12. 8086/8088中除___C___两种寻址方式外,其它各种寻址方式的操作数均在存储器中。
第三章作业1答案思考题:1、简述80C51的指令寻址方式。
答:80C51的指令寻址方式有:寄存器寻址、立即寻址、寄存器间址、直接寻址、变址寻址、相对寻址、位寻址2、访问特殊功能寄存器SFR,可使用哪些寻址方式?答SFR只能直接寻址3、若访问外部RAM单元,可使用哪些寻址方式?答:外间RAM单元,只能通过MOVX指令进行寄存器间接寻址。
4、若访问内部RAM单元,可使用哪些寻址方式?答:片内RAM低128字节,可直接寻址、寄存器间接寻址。
(只能使用R0, R1作为间址寄存器。
片内RAM20~2FH单元,可以位寻址。
5、MOV、MOVC、MOVX指令有什么区别?分别用于哪些场合?答:MOV指令用于对内部RAM的访问。
MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。
MOVX指令采用间接寻址方式访问外部数据存储器,有Ri和DPTR两种间接寻址方式。
执行MOVX 指令时,在P3.7引脚上输出RD有效信号,或在P3.6 引脚上输出WR有效信号,可以用做外部数据存储器或I/O的读/写选通信号,与单片机扩展电路有关。
作业:1.给下段汇编语句加注释,汇编成机器语言,并说明该段程序的作用ORG 0000H 机器码MOV SP,#5FH ;栈顶指针指向内部RAM5FH单元C:0X0000 75815FMOV R7,#08H ;R7<- 08H,R7为计数器0X0003 7F08MOV R0,#3FH ;R0指向内部RAM3FH单元0X0005 783FCLOOP: POP ACC ; ACC<- (SP), SP<- SP-1 0X0007 D0E0 MOV @R0,A;把A中内容送入R0指向的单元(3FH)0X0009 F6DEC R0 ;R0<- R0-1 0X000A 18DJNZ R7,CLOOP ;R7<-R7-1 ,R7不为0跳转0X000B DFFASJMP $ ;原地踏步0X000D 80FE程序段作用:把内部RAM中58H-5FH单元的内容依次存入从38H-3FH的八个单元2.阅读下列程序,分析其功能。
第三章习题集二.选择题(每小题1分,共15分)1. 逻辑地址1000:2000对应的物理地址为( B )。
A、1200HB、12000HC、2100HD、21000H2. 下面哪个寄存器使用时的默认段寄存器为SS( C )。
A、AXB、BXC、SPD、SI3. 当使用BP寄存器作基址寻址时,若无指定段替换,则内定在( B )段内寻址。
4.在下面四组寄存器中,第 D 组都可用于对存储器间接寻址方式的寄存器。
A. AX,BX,CX,IP;B. BX,SP,DX,SIC. IP,SP,BP,AXD. BP,BX,SI,DI5. 含有立即数的指令中,该立即数被存放在 A 。
A. 累加器中B. 指令操作码后的内存单元中C. 指令操作码前的内存单元中D. 由该立即数所指定的内存单元中6. 用段基值及偏移量来指明内存单元地址的方式称为( C )。
A、有效地址B、物理地址C、逻辑地址D、相对地址7. 已知物理地址为0FFFF0H,且段内偏移量为0B800H,若对应的段基地址放在DS中,则DS=( B )。
A、0FFFFHB、0F47FHC、2032HD、0F000H8. 含有立即数的指令中,该立即数被存放在 B 。
A. 累加器中B. 指令操作码后的内存单元中C. 指令操作码前的内存单元中D. 由该立即数所指定的内存单元中9.寄存器间接寻址方式中,操作数在 C 中。
A. 通用寄存器B. 堆栈C. 存储单元D. 段寄存器10.下列指令中,有语法错误的指令是(B D)。
A. MOV AX,[1000H]B. LEA AL,1000HC. MOV [1000H],ALD. MOV 1000H,AX11. 下列指令语法有错的是:CA. MOV AX,1000HB. MOV AX,BXC. MOV [AX],[1000H]D. MOV AX,[1000H]12. 8086/8088中除___C___两种寻址方式外,其它各种寻址方式的操作数均在存储器中。
16 32位微机原理第3章课后习题答案1632位微机原理第3章课后习题答案>第3章3.1:汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码,采用标识符号表示指令操作数,可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序3.2解决方案:(1)完整的汇编语言源程序由段组成(2)汇编语言源程序可以包含多个代码段、数据段、附加段或堆栈段,段之间的顺序可以随意排列(3)需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点(4)所有可执行语句必须在一个代码段中,描述性语句可以根据需要在任何段中开始位置:用标号指明返回DOS:使用DOS函数调用的4CH子函数停止汇编:执行end伪指令时停止汇编3.5解:段定位、段组合和段类型。
3.6给出采用一个源程序格式书写的例题3.1源程序示例3.1:创建一个在屏幕上显示信息的程序??解决方案:stacksegmentstackdb1024(0)个stackends41hdatasegmentstringdb'hello,assembly!',0dh,0ah,“$”数据结束codesegment'code'假设:代码,ds:data,ss:stackstart:movdx,offsetstringmovah,9int21hcodeendsendstart3.7 DOS支持的两种可执行程序结构是什么?在编写这两个程序时,我们应该注意什么?解决方案:(1).exe程序只有一个逻辑段,程序长度不超过64KB3.8举例说明等价“euq”伪指令和等号“=”伪指令的用途解:符号定义的伪指令有“equal equ”和“equal sign=”:symbol name equ数值表达式symbol name equ symbol name=数值表达式equ用于数值等价时不能重复定义符号名,但“=”允许有重复赋值。
《微机原理与接口技术》第三章作业一、书上P95作业题.4、5、6、710、11、12、13、14、1516、17、18、22、274、指出下列指令中的源操作数和目标操作数的寻址方式.〔1〕MOV BX,1000H源操作数:立即寻址;目标操作数:寄存器寻址〔2〕MOV AL,[BX] 源操作数:寄存器间接寻址;目标操作数:寄存器寻址〔3〕MOV CX,[BP+10H] 源操作数:寄存器相对寻址;目标操作数:寄存器寻址〔4〕MOV AL,ES:[BX+SI] 源操作数:基址加变址寻址;目标操作数:寄存器寻址〔5〕MOV [DI+1000H],BX 源操作数:寄存器寻址;目标操作数:寄存器相对寻址〔6〕MOV [1000H],CX 源操作数:寄存器寻址;目标操作数:直接寻址〔7〕MOV AL,[BX+DI+1234H] 源操作数:寄存器相对寻址;目标操作数:寄存器寻址〔8〕MOV AL,1000H[BX+SI] 源操作数:寄存器相对寻址;目标操作数:寄存器寻址〔9〕MOV [EBX+ESI+2010H],DX 源操作数:寄存器寻址;目标操作数:带位移的基址加变址寻址〔10〕MOV AX,0100H[EBX+ESI*4] 源操作数:基址加比例变址寻址;目标操作数:寄存器寻址5、设〔DS〕=2000H、〔ES〕=2100H、〔SS〕=1500H、〔BX〕=0100H、〔BP〕=0040H、〔SI〕=00A0H、〔DI〕=0120H,在指令MOV AX,src中,求用下列表示源操作数src的有效地址EA和物理地址PA各是多少?〔1〕100H[BX] EA=<100H+0100H>=0200H ; PA=2000*10H+0200H=20200H〔2〕ES:[BX+DI] EA=0100H+0120H=0220H ;PA=2100*10H+0220H=21220H〔3〕[BP] EA=0040H ; PA=1500*10H+0040H=15040H〔4〕ES:[BX+10H] EA=0100H+0010H=0110H ;PA=21000H+0110H=21110H<5> [BP+SI] EA=0040H+00A0H=00E0H ; PA=1500*10H+OOEOH=150E0H<6> [1000H] EA=1000H ; PA=2000*10H+1000H=21000H<7> ES:[DI] EA=0120H ; PA=2100*10H+0120H=21120H<8> 1050H[BX+SI] EA=1050H+0100H+00A0H=11F0H ; PA=2000*10H+11F0H=211F0H<9> DS:10C0H[BP+SI] EA=10C0H+0040H+00A0H=11A0H ; PA=2000*10H+11A0H=211A0H<10> [BX+DI] EA=0100H+0120H=0220H ; PA=2000*10H+0220H=20220H6、指出下列指令中的错误,并改正.〔1〕MOV BL,30A0H操作数不匹配改:MOV BX,30A0H〔2〕MOV 0010H,AL立即数不可以作为目标操作数改:MOV AX,0010H〔3〕XCHG AL,BX操作数类型不匹配改:XCHG AX,BX〔4〕MOV [AX],3456H立即数送入存储器需要说明改:MOV WORDPTR [AX],3456H〔5〕PUSH AL堆栈以字为操作单元改:PUSH AX〔6〕POP CS POP不可以用CS为目标操作数改:POP AX〔7〕MOV DS,1000H立即数不能直接送入段寄存器改:MOV AX,1000H MOV DS,AX〔8〕MOV [BX],[1000H]存储器不可以相互传送改:MOV AX,[1000H]MOV [BX],AX〔9〕LDS 〔BX〕,[1000H]LDS使用时期目标为16位通用寄存器改:LDS BX,[1000H] 〔10〕LEA BX,CX LEA源操作数为存储器改:LEA BX,[CX]7、已知〔AX〕=4A0BH,[1020H]单元中的内容为260FH,写出下列每条指令单独执行后的结果.〔1〕MOV AX,1020H ;〔AX〕=1020H〔2〕XCHG AX, [1020H] ;〔AX〕=260FH〔3〕MOV AX,[1020H] ;〔AX〕=260FH〔4〕LEA AX,[1020H] ;〔AX〕=1020H10、设一个堆栈段共有100H个字节单元,堆栈的起始地址为1250H:0000H,若在堆栈中存有5个字数据,问:〔1〕栈顶的物理地址多少?栈底:12600H〔2〕栈底的物理地址是多少?栈顶:12600-A=125F6H〔3〕当前SS和SP的内容是多少?SS:[1250H:0000H ]SP: [1250H:00F6H ]〔4〕若弹出两个数据,SP的内容是多少?SP:[1250H:00FAH ]11、编程完成下列程序段,根据运算结果置标志位OF、SF、ZF、AF、PF、CF,并分析程序执行结果是否正确?为什么?〔设字长n=8〕〔1〕30+64〔2〕122-64〔3〕96+52〔4〕-68+〔-72〕答:〔1〕MOV AL,30MOV BL,64ADD AL,BL结果:0101111O F=0 SF=0 ZF=0 AF=0 PF=1 CF=0〔2〕MOV AL,122MOV BL,64SUB AL,BL结果:00111010 OF=0 SF=0 ZF=0 AF=0 PF=1 CF=0〔3〕MOV AL,96MOV BL,52ADD AL,BL结果:10010100 F=0 SF=0 ZF=0 AF=0 PF=1 CF=0〔4〕MOV AL,-68MOV BL,-72ADD AL,BL结果:01110100 OF=1 SF=0 ZF=0 AF=1 PF=1 CF=117、判断下列指令格式的对与错,并解释错在哪里.〔1〕ADD 25H,AX 〔×〕目标操作数不可以为立即数〔2〕INC BX,1 〔×〕INC只有目标操作数〔3〕MUL AL,BL 〔×〕乘法指令目标操作数是隐含的〔4〕SUBB AL,3 〔×〕减法指令是SUB〔5〕DAA AL 〔×〕DAA后无操作数〔6〕NEG CX,0 〔×〕NEG后只有目标操作数〔7〕CMP [BX],1000H[BX+SI]〔√〕18、设〔AL〕=10010010B,将AL的内容算术右移2位,AL的内容和CF是多少?再将AL的内容逻辑右移2位,AL的内容和CF是多少?算术右移2位 AL:11100100 CF:1逻辑右移2位 AL:00100100 CF:122、写出下列程序段执行后的结果.MOV CL,4MOV AL,87MOV DL,ALAND AL,0FHOR AL,30HSHR DL,CLOR DL,30H〔AL〕=37H,〔DL〕=35H27、试用CMP指令和条件转移指令实现下列判断〔1〕AX和CX中的内容为无符号数:若〔AX〕>〔CX〕则转至BIGGER符号执行;若〔AX〕<〔CX〕则转至LESS符号执行.CMP AX,CXJA BIGGERLESS〔2〕BX和DX中的内容为无符号数:若〔BX〕>〔DX〕则转至BIGGER符号执行;若〔BX〕<〔DX〕则转至LESS符号执行.CMP BX,DXJG BIGGERJL LESS。
微机原理及接口第三章作业答案“微机系统原理与接口技术”第三章习题解答1.下列各条指令是否有错?如果有,请指出错误之处并改正。
(1)movds,1000h(2)mov[100],23h(3)addax,[bx+bp+6](4)pushdl(5)inax,[3fh](6)out3ffh,al(7)lesss,[si](8)pop[ax](9)imul4ch(10)shlbx,5(11)int300(12)xchgdx,0fffh请问:(1)错误。
不容许轻易向段寄存器送来立即数,可以改成:movmovax,1000hds,ax(2)错误。
该指令在语法上是对的,即可以把一个立即数送入一个存储单元;但是如果考虑实际编译,则第一操作数前应加上byteptr或wordptr说明,否则汇编程序会因不能确定操作数长度而指示出错。
可改为:movaddpushinbyteptr[100],23hax,[bx+di+6]dxax,3fh(3)错误。
无法同时采用两个基址寄存器bx、bp展开间接串行,可以改成:(4)错误。
堆栈操作方式需以字为单位展开,而dl就是一个字节。
可以改成:(5)错误。
在输出/输入指令中,8十一位端口地址应当轻易写下在操作数处。
可以改成:(6)错误。
端口地址3ffh已远远超过8十一位二进制则表示范围,16十一位端口地址应用领域dx。
可以改成:movoutlesdx,3ffhdx,alax,[si](7)错误。
les指令的目操作数应该是通用寄存器,不能是段寄存器。
可改为:(8)错误。
ax不能用于间接寻址,间接寻址只能用bx、bp、si、di四个寄存器之一。
可改为:popmovimulmovshl[bx]bl,4chblcl,5bx,cl(9)错误。
立即数无法搞乘法指令的操作数,可以改成:(10)错误。
当逻辑移位的次数大于1时,应该用cl指示次数。
可改为:(11)错误。
操作数300?255,已远远超过有效率的中断类型码范围。
16 32位微机原理第3章课后习题答案1632位微机原理第3章课后习题答案>第3章3.1:汇编语言就是一种以处理器指令系统为基础的低级程序设计语言,它使用助记符抒发指令操作码,使用标识符号则表示指令操作数,可以轻易、有效地掌控计算机硬件,因而难建立代码序列短小、运转快速的可执行程序3.2解:(1)完备的汇编语言源程序由段共同组成(2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列(3)须要单一制运转的程序必须涵盖一个代码段,并命令程序执行的初始点,一个程序只有一个初始点(4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内已经开始边线:用标号阐明返回dos:利用dos功能调用的4ch子功能来实现汇编停止:执行到一条end伪指令时,停止汇编3.5求解:段定位、段组合和段类型。
3.6得出使用一个源程序格式书写的例题3.1源程序例题3.1:创建一个在屏幕上显示一段信息的程序??解:stacksegmentstackdb1024(0)stackends41hdatasegmentstringdb'hello,assembly!',0dh,0ah,‘$’dataendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movdx,offsetstringmovah,9int21hcodeendsendstart3.7dos支持哪两种可执行程序结构,编写这两种程序时需要注意什么?解:(1).exe程序只有一个逻辑段,程序长度不超过64kb3.8举例说明等价“euq”伪指令和等号“=”伪指令的用途求解:符号定义伪指令有“等价equ”和“等号=”:符号名equ数值表达式符号名equ符号名=数值表达式equ用作数值等价时无法重复定义符号名,但“=”容许存有重复赋值。
微机原理第三章练习题及解一:单项选择题●指令MOV AX,[BX] 中,源操作数的缺省段是( A 。
A:DS B:ES C:SS D:CS●指令PUSH [BX] 中,目的操作数的段寄存器是( C 。
A:DS B:ES C:SS D:CS●指令MOVSB 中,目的块的段寄存器是( B 。
A:DS B:ES C:SS D:CS●下列指令中,不正确的指令是( D 。
A:MOV AX,BX B:MOV AX,[BX]C:MOV AX,CX D:MOV AX,[CX]●下列指令中, 不正确的指令是( D 。
A:MOV AL,BL B:MOV AL,[BX]C:MOV AL,CL D:MOV AL,[BL]●下列指令中,不正确的指令是( D 。
A:MOV [BX+SI],AX B:MOV AX,[BX + SI]C:MOV AX,SI D:MOV AX,[BX + CX]●若要使寄存器AL中的高4 位不变,低4 位0,使用指令( B 。
A:AND AL,0FH B:AND AL,0F0HC:OR AL,0FH D:OR AL,0F0H●若要使寄存器AL中的高4 位不变,低4 位1,使用指令( C 。
A:AND AL,0FH B:AND AL,0F0HC:OR AL,0FH D:OR AL,0F0H●若要使寄存器AL中的高4 位为0,低4 位不变,使用指令( A 。
A:AND AL,0FH B:AND AL,0F0HC:OR AL,0FH D:OR AL,0F0H●若要使寄存器AL中的高4 位为1,低4 位不变,使用指令( D 。
A:AND AL,0FH B:AND AL,0F0HC:OR AL,0FH D:OR AL,0F0H●条件转移指令JNZ的转移条件是( B 。
A:CF = 0 B:ZF = 0 C:CF = 1 D:ZF = 1●条件转移指令JZ的转移条件是( D 。
A:CF = 0 B:ZF = 0 C:CF = 1 D:ZF = 1●8086CPU响应可屏蔽中断的条件是( B 。