第三章微机原理 习题课
- 格式:doc
- 大小:47.50 KB
- 文档页数:8
微机原理及应⽤(陈继红、徐晨)课后习题答案微机原理及应⽤(陈继红、徐晨)课后习题答案第三章8086/8088指令系统和寻址⽅式习题答案(部分)3.1总结计算机中⼗进制、⼆进制、⼋进制及⼗六进制数的书写形式。
123D、0AFH、77Q、1001110B分别表⽰什么计数制的数?答案:123D、0AFH、77Q、1001110B分别表⽰⼗进制、⼗六进制、⼋进制、⼆进制。
3.2字长为8位、16位⼆进制数的原码、补码表⽰的最⼤数和最⼩数分别是什么?答案:8位原码表⽰的最⼤数:(27-1)、8位补码表⽰的最⼤数:(27-1)、8位原码表⽰的最⼩数:-(27-1)、8位补码表⽰的最⼩数-27。
16最⼩数:-215。
3.3答案:7DH。
(2)255(3)7248H。
(4)509013E2H。
3.4答案:240D0F0H。
128D80H。
(3)11111111⼗进制数:255D;⼗六进制数:0FFH。
(4)01010101⼗进制数:85D;⼗六进制数:55H。
3.5把下列⽆符号⼗六进制数分别转换为⼗进制数和⼆进制数。
(1)FF(2)ABCD(3)123(4)FFFF答案:(1)FF⼗进制数:255D;⼆进制数;11111111B。
1010101111001101B。
(3)123⼗进制数:291D;⼆进制数;000100100011B。
(4)FFFF⼗进制数:65535D;⼆进制数;1111111111111111B。
3.6分别⽤8位⼆进制数和16位⼆进制数写出下列⼗进制数的原码和补码。
(1)16(2)-16(3)+0(4)-0(5)127(6)-128(7)121(8)-9 答案:(1)16800010000(2)-16800010000(3)+0800000000(4)-0800000000(5)127801111111(6)-128810000000(7)1218:01111001;16位⼆进制数原码:0000000001111001补码:0000000001111001。
ß 1. DS=1000H, BX=0200H, SI=0002H (10200H~10205H)依次存有10H,2AH,3CH,46H,59H,6BH ,给出执行指令后AX 的内容。
(1)MOV AX ,0200HAX=0200 (2)MOV AX ,[200H] 物理地址=1000H ×10H+0200H=10200H, AX=2A10H(3)MOV AX ,BXAX=0200H (4)MOV AX ,3[BX]物理地址=1000H ×10H +0200H+3H=10203H, AX=5946H (5)MOV AX ,[BX+SI] 物理地址=1000H ×10H+0200H +2H=10202H , AX=463CH(6)MOV AX ,2[BX+SI] 物理地址=1000H ×10H +200H+2H+2H=10204H , AX=6B59H ß 2.DS=1000H ,ES=2000H ,SS=3500H ,SI=00A0H , DI=0024H ,BX=0100H ,BP=0200H ,VAL=0030H ,指出寻址方式和物理地址。
(1)MOV AX ,[100H] (2)MOV AX ,VAL(3)MOV AX ,[BX] (4)MOV AX ,ES:[BX](5)MOV AX ,[SI] (6)MOV AX ,[BX+10H](7)MOV AX ,[BP] (8)MOV AX ,VAL[BP][SI](9)MOV AX ,VAL[BX][DI] (10)MOV AX ,[BP][DI](1)MOV AX, [100H] 直接寻址方式,10100H物理地址=DS ×10H+100H=10000H+0100H=10100H(2)MOV AX, V AL 直接寻址方式,10030H物理地址=DS ×10H+V AL=10000H+0030H=10030H(3)MOV AX, [BX] 寄存器间接寻址,10100H物理地址=DS ×10H+BX=10000H+0100H=10100H(4)MOV AX, ES:[BX] 寄存器间接寻址,20100H物理地址=ES ×10H+BX=20000H+0100H=20100H(5)MOV AX, [SI] 寄存器间接寻址,100A0H物理地址=DS ×10H+SI=10000H+00A0H=100A0H(6)MOV AX, [BX+10H] 寄存器相对寻址,10110H物理地址=DS ×10H+BX+10H=10000H+0100H+10H=10110H(7)MOV AX, [BP] 寄存器间接寻址,35200H物理地址=SS ×10H+BP=35000H+0200H=35200H(8)MOVAX, V AL[BP][SI] 相对基址变址寻址,352D0H 物理地址=SS ×10H+BP+SI+V AL=35000H+0200H+00A0H+0030H=352D0H (9)MOVAX, V AL[BX][DI] 相对基址变址寻址,10154H 物理地址=DS ×10H+BX+DI+V AL=10000H+0100H+0024H+0030H=10154H (10)MOV AX, [BP][DI] 基址变址寻址,35224H物理地址=SS ×10H+BP+DI=35000H+0200H+0024H=35224Hß 3.判断并说明原因(1)MOV DL ,AX 错,寄存器寻址方式中,目的操作数与源操作数长度必须一致错,寄存器寻址方式中,目的操作数与源操作数长度必须一致错,寄存器寻址方式中,目的操作数与源操作数长度必须一致 (2)MOV 8650H ,AX 错,目的操作数不可以是立即数错,目的操作数不可以是立即数(3)MOV DS ,0200H 错,MOV 指令不允许将立即数传入段寄存器 (4)MOV [BX],[1200H] 错, MOV 指令的两个操作数不能同时为存储器指令的两个操作数不能同时为存储器(5)MOV IP ,0FFH 错, IP 不能作为MOV 指令的目的操作数指令的目的操作数(6)MOV [BX+SI+3],IP 错, IP 不能作为MOV 指令的源操作数指令的源操作数(7)MOV AX ,[BX][BP] 错,BX 与BP 不可以同时出现在源操作数当中(8)MOV AL ,ES:[BP] 对(9)MOV DL ,[SI][DI] 错,SI 与DI 是两个变址寄存器,不可以同时出现在源操作数中。
李伯成《微机原理》习题第三章3.1MOV AX,00H;立即寻址SUB AX,AX;寄存器寻址MOV AX,[BX];寄存器间接寻址MOV AX,TABLE;直接寻址MOV AL,ARAY1[SI];寄存器相对寻址MOV AX,[BX+6];寄存器相对寻址3.2若1KB的数据存放在TABLE以下,试编写程序将该数据拌到NEXT之下。
程序片段如下:ORG 100hMOV CX,03FFH;数据个数LEA SI,TABLE;源区首地址LEA DI,NEXT;目的区首地址AGAIN: MOV AL,[SI];MOV [DI],AL;搬移INC SIINC DI;移动地址指针DEC CX;循环计数器递减JNZ AGAIN;循环未结束转HLT;暂停TABLE DB 1024 dup ('A');源数据区NEXT DB 1024 dup (0);目的数据区3.3编写10个字(16位二进制数)之和的程序ORG 100hLEA SI,ADD1;LEA DI,ADD2;LEA BX,SUM;MOV CL,CONT;MOV CH,0; 循环初始化CLC;进位清零MADD1: MOV AX,[SI];读加数1ADC AX,[DI]ADD SI,2;移动源区地址指针ADD DI,2;移动目的区地址指针MOV [BX],AX;回存计算结果ADD BX,2;移动“和”存储区地址指针LOOP MADD1;循环控制HLT;暂停ADD1 DB 0FEH,86H,7CH,44h,56H,1FH,24H,01H,02H,33H;加数1ADD2 DB 56H,49H,4EH,0FH,9CH,22H,45H,11H,45H,21H;加数2SUM DB 10 DUP (0);和存储单元CONT DB 5 ;循环次数3.4 某16位二进制数,放在DATA连续的两个单元中,试编程求其平方根和余数,将其分别存放在ANS 和REMAIN中。
>第3章3.1:汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码,采用标识符号表示指令操作数,可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序3.2 解:(1)完整的汇编语言源程序由段组成(2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列(3)需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点(4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内(5)通常,程序还需要一个堆栈段3.3 解:存储模式特点TINY COM类型程序,只有一个小于64KB的逻辑段(MASM 6.x支持)SMALL小应用程序,只有一个代码段和一个数据段(含堆栈段),每段不大于64KB COMPACT代码少、数据多的程序,只有一个代码段,但有多个数据段MEDIUM代码多、数据少的程序,可有多个代码段,只有一个数据段LARGE大应用程序,可有多个代码段和多个数据段(静态数据小于64KB)HUGE更大应用程序,可有多个代码段和多个数据段(对静态数据没有限制)FLAT32位应用程序,运行在32位80x86CPU和Windows 9x或NT环境3.4解:开始位置:用标号指明返回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=091DH,SS=1E4AH,AX=1234H,BX=0024H,CX=5678H,BP=0024H,SI=0012H,DI=0032H,(09226H)=00F6H,(09228H)=1E40H ,(1E4F6H)=091DH。
在以上给出的环境下,试问下列指令段之行后的结果如何?(1)MOV CL,[BX+20H][SI];物理地址=DS*10H+BX+SI+20H=091D0H+0024H+0012H+0020H=09226H(09226H)=00F6H,(09226H)=F6H, (09227H)=00H执行后:CL=F6H(2)MOV [BP][DI], CX物理地址=SS*10H+BP+DI=1E4A0H +0024H+0032H=1E4F6HCX=5678H 执行后:(1E4F6H) = 5678H(3)LEA BX, [BX+20H][SI];BX=BX+20H+SI=0056HMOV AX, [BX+2];物理地址=DS*10H+BX+2=091D0H +0058H=09228H (09228H)=1E40H 执行后:AX=1E40H(4)LDS SI, [BX][DI];物理地址=DS*10H+BX+DI=091D0H +0056H=09226H (09226H)=00F6H (09228H)=1E40H执行后:BX=(09226H)=00F6HDS=(09228H)=1E40HMOV [SI],BX物理地址=DS*10H+SI =1E400H +0012H=1E412HBX=0024H, 执行后:(1E412H)=0024H (5)XCHG CX,[BX+32H]物理地址=DS*10H+BX+32H =091D0H +0056H =09226H (09226H)=00F6H , CX=5678H执行后:(09226H)=5678H , CX=00F6HXCHG [BX+20H][SI], AX物理地址=DS*10H+BX+20H+SI =091D0H +0056H =09226H (09226H)=5678H , AX=1234H执行后:(09226H)=1234H , CX=5678H3.2设DS=1000H,SS=2000H,AX=1A2BH,BX=1200H,CX=339AH,BP=1200H,SP=1350H,SI=1354H,(11350H)=0A5H,(11351H)=3CH,(11352H)=0FFH,(11353H)=26H,(11354H)=52H,(11355H)=0E7H,(126A4H)=9DH,(126A5H)=16H,(21350H)=88H,(21351H)=51H。
第三章习题与参考答案3.1 已知 (DS) = 1000H,(ES) = 2000H,(SS) = 3000H,(SI) = 0050H,(BX) =0100H,(BP) =0200H,数据变量DISP的偏移地址为1000。
指出下列指令的寻址方式和物理地址。
(1) MOV AX,0ABH 立即寻址无(2) MOV AX,BX 寄存器寻址无(3) MOV AX,[l000H] 直接寻址 10000H(4) MOV AX,DATA 直接寻址 (DS*16+DATA )(5) MOV AX,[BX] 寄存器间接寻址 10100H(6) MOV AX,ES:[BX] 寄存器间接寻址 20100H(7) MOV AX,[BP] 寄存器间接寻址 30200H(8) MOV AX,[SI] 寄存器间接寻址 10050H(9) MOV Ax,[BX+l0] 寄存器相对寻址 1010AH(10) MOV AX,DISP[BX] 寄存器相对寻址 11100H(1l) MOV AX,[BX+SI] 基址变址寻址 10150H(12) MOV AX,DISP[BX][SI] 相对基址变址寻址 11150H3.2 分别说明下例指令采用的寻址方式和完成的操作功能。
(1) MOV CX,2000H 立即寻址将立即数2000H送CX寄存器(2) MOV DS,AX 寄存器寻址将AX寄存器内容送DS段寄存器(3) AND CH,[1000H] 直接寻址将[DS*16+1000H]单元的内容送CH寄存器(4) ADD [DI],BX 寄存器间接寻址将CL寄存器的内容送[DS*16+DI]单元(5) MOV SS:[3000H],CL 直接寻址将CL寄存器的内容送[SS*16+3000H]单元(6) SUB [BX][SI],1000H 直接寻址将立即数1000H送[DS*16+BX+SI+50H]单元(7) ADD AX,50H[BX][SI] 相对基址变址寻址将[DS*16+BX+SI+50H]单元的内容送AX寄存器(8) PUSH DS 寄存器寻址将DS寄存器的内容送[SS*16+SP]单元(9) CMP [BP][DI],AL 寄存器寻址将AL寄存器的内容送[SS*16+DI+BP]单元3.3 判断下列指令正误,如果错误请指出原因。
习题3答案1. 指出下列指令的错误原因。
(1) AND AX, DL ;类型不匹配(2) ADD CS, DX ;CS不能作为目的操作数(3) MOV AX, IP ;IP不能作为指令的操作数(4) MOV [BP][SI], [SI] ;两个操作数不能同时为内存操作数(5) SUB [BP][SI], ES:DX ;段超越前缀只能用在内存操作数之前(6) XCHG AL, [SI][DI] ;没有[SI][DI]这种操作数形式(7) JGE AX ;条件转移指令的操作数只能是标号(8) PUSH DL ;对堆栈不能进行字节操作2. 用一条指令将BX清0。
(请给出3种方法)方法1:MOV BX, 0方法2:SUB BX, BX方法3:AND BX, 0 ;将BX和0做与,可以将BX清零方法4:XOR BX, BX3. 写出实现下列功能的指令序列。
(1) 判断AX的值,若AX等于0,则转到标号LABEL处。
(请写出3种方法)方法1:CMP AX, 0JZ LABEL ; 如果ZF = 0,说明AX为0,因为CMP指令是做减法,但是不写回结果; 因此指令执行后AX内容不会受到破坏方法2:TEST AX, 0FFHJZ LABEL ; 如果ZF = 0,说明AX为0,TEST指令做与运算,可是不写回结果,只影响标志位。
; 和0与清零,和1与不变,所以和FFH做与的结果是AX本身,但是此时标志位已; 经改变了,所以可以利用标志位来判断,但是AX内容却没有受到任何破坏方法3:AND AX, 0FFH ;这个方法的原理和方法2其实是完全一致的JZ LABEL(2) 将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位清0。
MOV AH, ALAND AL, 0FH ; AL高4位通过与清零,而低4位保持不变MOV CL, 4SHR AH, CL ; 这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后,高位补零(3) 若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入BX;否则,AX和BX不变。
8086第三章作业3-11在实模式下,若段寄存器中装入如下数值,试写出每个段的起始地址和结束地址(1)1000H 10000H-1FFFFH(2)1234H 12340H-2233FH(3)E000H E0000H-EFFFFH(4)AB00H AB000H-BAFFFH3-12对于下列CS:IP组合,计算出要执行的下条指令存储器地址。
(1)CS=1000H和IP=2000H 答:下条指令存储器地址:12000H(2)CS=2400H和IP=1A00H 答:下条指令存储器地址:25A00H(3)CS=1A00H和IP=B000H 答:下条指令存储器地址:25000H(4)CS=3456H和IP=ABCDH 答:下条指令存储器地址:3F12DH3-37 指出下列指令源操作数的寻址方式(1)MOV AX,1200H;立即数寻址(2)MOV BX,[1200H];直接寻址(3)MOV BX,[SI];变址寻址(4)MOV BX,[BX+SI+1200];相对基变址寻址(5)MOV [BX+SI],AL;寄存器寻址(6)ADD AX,[BX+DI+20H];相对基变址寻址(7)MUL BL ;寄存器寻址(8)JMP BX ;间接寻址(9)IN AL,DX ;寄存器间接寻址(10)INC WORD PTR[BP+50H] ;相对基址寻址小结:虽然对存储器的访问指令、输入/输出指令(IN指令和OUT指令)、跳转指令(JMP指令)都有直接寻址和间接寻址,但是形式是有很大差别的:1.直接寻址:(1)对于存储器的访问用方括号括起来的二进制数,如:MOV BX,[1200H](2)对于输入/输出指令(IN指令和OUT指令)用二进制数如:IN AX,8FH 又如: OUT 78H,AL(3)对于跳转指令(JMP指令)是以目标标号为直接地址的如: JMP ADDR12.间接寻址:(1)对于存储器的访问有分为基址寻址、变址寻址、基址加变址寻址以及带位移量的所谓相对基址寻址、相对变址寻址、相对基址加变址寻址如:MOV AX,[BP](2)对于输入/输出指令用DX做间接寻址寄存器如:IN AX,DX 又如: OUT DX,AL(3)跳转指令直接写明寄存器即可 (段内)如: JMP BX段间需组合:如: JMP DWORD PTR [BX+ADDR1]3-38指出8086/8088下列指令中存储器操作数地址的计数表达式。
.第三章习题课一、选择题1、在汇编语言程序的开发过程中使用宏功能的顺序是()。
A、宏定义,宏调用B、宏定义,宏展开C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是()。
A、名字项B、操作项C、操作数项D、注释项3、下列叙述正确的是()A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令4、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有().A、CMPB、SUBC、ANDD、MOV5、测试BL寄存器容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是()。
A TEST BL,4FHJZ NEXTB XOR BL,4FHJZ NEXTC AND BL,4FHJZ NEXTD OR BL,4FHJZ NEXT6、检查BUF的容是否为正偶数,如是正偶数,则令AL=0。
下面程序段正确的是( )。
A、MOV AL,BUF JS K1SHR AL,1JNC K1MOV AL,0K1:……B、MOV AL,BUF AND AL,11 JNZ K2MOV AL,0K2:……C 、MOV AL ,BUF TEST AL ,81H JNZ K3 MOV AL ,0 K3:……7、下列描述中,执行循环的次数最多的情况是()。
A .MOV CX ,0B .MOV CX ,1 LOP :LOOP LOP LOP :LOOP LOPC .MOV CX ,0FFFFHD .MOV CX ,256 LOP :LOOP LOP LOP :LOOP LOP8、在下列指令中,指令的执行会影响条件码中的CF 位。
微机原理课后习题参考答案(总25页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--上册第一章P9微处理器、微型计算机、微型计算机系统的区别是什么答:(1)微型计算机中的运算器和控制器合起来称为中央处理器,也就是微处理器,又称微处理机。
(2)微型计算机是由cpu、主存储器、输入/输出接口电路和系统总线构成。
(3)微型计算机系统由微型计算机、输入/输出设备、外存储器、系统软件、电源、面板和机架等组成。
微型计算机由哪些基本部分构成微型计算机是由cpu、主存储器、输入/输出接口电路和系统总线构成。
说明CISC、RISC及其主要区别。
CISC是指复杂指令系统计算机,RISC是指精简指令系统计算机。
他们的区别在于不同的CPU设计理念和方法。
RISC指令系统仅包含哪些必要的经常使用的指令,不经常使用的功能,往往通过基本指令组合来完成。
完成特殊功能时效率比较低。
CISC的指令系统比较丰富,一些特殊功能都有相应的指令。
处理特殊任务效率较高。
RISC对存储器操作相对简单,使对存储器访问的控制简化;而CISC机器的存储器操作指令较多,对存储器的访问有更多的指令直接操作,要求的控制逻辑比较复杂。
RISC在一条指令执行的适当地方可以响应中断;而CISC机器是在一条指令执行结束后响应中断。
RISC CPU的电路构成比CISC CPU简单,因此面积小、功耗也更低;CISC电路CPU电路复杂,同水平比RISC CPU面积大、功耗大。
RISC CPU结构比较简单,布局紧凑规整,设计周期较短,比较容易采用一些并行计算的最新技术;CISC CPU结构复杂,设计周期长,技术更新难度大。
从使用角度看,RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。
第二章8086CPU 由哪两大部分组成简述它们的主要功能。
总线接口部件BIU跟执行部件EU。
第一章学习指导:1.掌握十六进制、二进制、BCD(十进制数)、ASCII码2.掌握有符号数(补码、原码)、无符号数计算机的表示方法以及表示范围3.掌握补码运算4.了解计算机基本组成及工作原理5.了解新技术6.了解计算机主要性能指标2、完成下列数制之间的转换。
(1)01011100B=92D (3)135D=10000111B (5)10110010B=262Q=B2H3、组合型BCD码和非组合型BCD码有什么区别?写出十进制数254的组合型BCD数和非组合型数。
答:组合型BCD码用高四位和低四位分别对应十进制数的个位和十位,其表示范围是0~99;非组合型BCD码用一个字节的低四位表示十进制数,高四位则任意取值,表示范围为0~9。
组合型:254=(001001010100)BCD非组合型:254=(00000010 00000101 00000100)BCD7、计算机为什么采用补码形式存储数据?当计算机的字长n=16,补码的数据表示范围是多少?答:在补码运算过程中,符号位参加运算,简化了加减法规则,且能使减法运算转化为加法运算,可以简化机器的运算器电路。
+32767~ -32768。
9、设计算机字长n=8,求下列各式的[X+Y]补和[X-Y]补,并验证计算结果是否正确。
(1)X=18,Y=89 [X+Y]补=00010010+01011001=01101011B=107D 正确[X-Y]补=10111001B=00010010+10100111=(-71D)补正确(2)X=-23,Y=-11 [X+Y]补=11101001+11110101=11011110B=(-34D)补正确[X-Y]补=11101001+00001011=11110100B=(-12D)补正确(3)X=18,Y=-15 [X+Y]补=00010010+11110001=00000011B=(3D)补正确[X-Y]补=00010010+00001111=00100001B=(33D)补正确(4)X=-18,Y=120 [X+Y]补=11101110+01111000=01100110B=(102D)补正确[X-Y]补=11101110+10001000=01110110B=(123D)补由于X-Y=-138 超出了机器数范围,因此出错了。
大学微机原理第三章习题8086/8088的寻址方式和指令系统习题一.单项选择题1.设置BX=2000h,Si=3000h,指令movax的源操作的有效地址[BX+Si+8]为()。
a、5000hb.5008hc.23008hd.32022h2.设ds=1000h,es=2000h,bx=3000h,指令addal,[bx]的源操作数的物理址为()。
a.13000hb.23000hc.33000hd.3000h3.设ds=2000h,es=3000h,si=200h,指令moves:[si],al的目的操作数的物理地址为()。
a.20210hb.30200hc.50200hd.200h4.指令movmem[bx],ax中的mem是()。
a.原码b.反码c.补码d.移码5.用来作为寄存器间接寻址的寄存器有()个。
a.8b.6c.5d.46.指令mov[BX+Si],Al中的目标操作数使用()段寄存器。
a、 csb.dsc.ssd.es7.指令movbx,[bp+5]中的源操作数使用()段寄存器。
a.csb.dsc.ssd.es8.段内间接寻址只改变()中的内容。
a、 csb之间的间接寻址。
ipc。
政务司司长和知识产权署。
psw9。
仅更改()中的内容。
a.csb.ipc.cs和ipd.psw10.下述指令中不改变psw的指令是()。
a.movax,bxb.andal,0fhc.shrbx,cld.addal,bl11.下述指令中不影响cf的指令是()。
a.shlal,1b.inccxc、添加[bx],ald.subax,bx12.两个整数补码9ch和7ah相加运算后,会产生()。
a.无溢出且无进位b.无溢出但有进位c.有溢出且有进位d.有溢出但无进位13.指令jmpwordptr[bx]属于()寻址。
a、段内直接B.段内间接C.段间直接D.段间间接14。
指令movax的源操作数[BX+Si+8]属于()寻址。
习题答案1-6 将下列十进制数转换为二进制数、十六进制数和BCD 数 (1)124.625 (6)268.875 解:(1)124=01111100B =7CH ,0.625×16=10,所以0.625=0.AH=0.1010B ∴124.625=7C.AH=01111100.1010B=000100100100.011000100101BCD(2)268=256+12=100001100B =10CH ,0.875×16=14,∴0.875=0.EH=0.1110B. ∴268.875=10C.EH=100001100.111B=001001101000.100001110101BCD 1-7 用16位二进制数表示出下列十进制数的原码、反码和补码。
(1)+128 (4)-5 解:(1)+128 的原码和补码反码均为0000000100000000B(4)-5的原码为1000000000000101B ,反码为1111111111111010B ,补码为1111111111111011B 。
1-10 试绘出以下十六进制数在内存中存放的示意图。
设存放地址均为00H 。
解:(1)F7H (2)03BAH (3)C804326BH (4)1122334455667788H2-1 请将左边的术语和右边的含义联系起来,在括号中填入你选择的代号字母: 1. 字长 (i )a. 指由8个二进制位组成的通用基本单元。
2. 字节 (a )b. 是CPU 执行指令的时间刻度。
3. 指令 (h )c. μPS 所能访问的存储单元数,与CPU 地址总线条数有关。
4. 基本指令执行周期(g )d. 唯一能代表存储空间每个字节单元的地址,用5位十六进制数表示。
5. 指令执行时间 (j )e. CPU 访问1次存储器或I/O 操作所花的时间。
6. 时钟周期 (b )f. 由段基址和偏移地址两部分组成,均用4位十六进制数表示。
第 三 章 存 储 器习题答案一、填空题1、某存储器模块的容量为64K 字节,若采用2164(64K ×1位)组成,则需要2164 8 片,若改用2764(8K ×8位),则需 8 片。
解答:容量单个存储器芯片的存储存储器系统的存储容量=片个数构成存储器系统所需芯所以:64*82164=864*1K bitK bit=所需芯片个数片64*82764=88*8K bitK bit=所需芯片个数片2、1K ⅹ8位的RAM 芯片有 10 条地址线, 8 条数据线,若用其组成16K ⅹ8位存储器需要 16 片。
解答:存储单元的个数(字长)通常与地址线的位数相关,每个存储单元存储的二进制位数(位数)与数据线的位数相关。
存储容量为1K*8bit (8K*8位),表示每片RAM 有1K 个存储单元(K 1210=),每个存储单元存储8位二进制数,也可以写为1KB (B 表示8位二进制数,即1个字节Byte ),因此该RAM 芯片有10根地址线(A 0-A 9),8根数据线(D 0-D 7)。
3、现要用6116SRAM 芯片构成8K ×32位的存储器,共需此种芯片 16 片。
解答:8*326116=162*8K bitK bit=所需芯片个数片二、选择题1、SRAM 芯片6116的3个信号CE 、OE 、WE 电平分别为 时,6116的工作方式为读出。
( D )A.1,0,0 B.0,0,0 C.0,1,1 D.0,0,1解答:3个信号CE 、OE 、WE 为6116的控制信号,CE (书中用CS 表示):片选信号,低电平有效,CE 为低电平时,芯片被选中,此时可以进行读写操作,WE :写允许信号,低电平有效时允许将数据写入芯片,OE :输出允许信号,低电平有效时为读操作。
因此当6116处于读工作方式时CE 为0,OE 为0,WE 为1;处于写工作方式时CE 为0,OE 为1,WE 为0。
微机原理课后习题答案2.1 8086 CPU 在内部结构上由哪几部分组成?其功能是什么?【答】8086 的内部结构-成两部分:总线接口部件BIU,负责控制存储器读写。
执行部件EU,EU 从指令队列中取出指令并执行。
8086 是16 位微处理器,有16 根数据线、20 根地址线,内部寄存器、运算部件以及内部操作都是按16 位设计的。
2.2 8086 的总线接口部件有那几部分组成?【答】8086 的总线接口部件主要由下面几部分组成:4 个段寄存器CS/DS/ES/SS, 一个16 位的指令指针寄存器IP, 一个20 位地址加法器, 6 字节的指令队列,内部暂存器以及输入输出电路组成.2.3 8086 的执行部件有什么功能?由那几部分组成?【答】8086 的执行部件主要由下面几部分组成:(1)四个16 位通用寄存器AX、BX、CX、DX, 通用四个16 位专用寄存器,包括二个指针寄存器SP、BP, 二个变址寄存器SI、DI, 算术逻辑单元ALU,标志寄存器。
2.4 8086CPU 状态标志和控制标志又何不同?程序中是怎样利用这两类标志的? 8086 的状态标志和控制标志分别有哪些?【答】标志分两类:状态标志(6 位):反映刚刚完成的操作结果情况。
控制标志(3 位):在某些指令操作中起控制作用。
2.5 8086/8088 和传统的计算机相比在执行指令方面有什么不同?这样的设计思想有什么优点? 8086CPU 执行转移指令时,指令队列寄存器内容如何变化?【答】传统的计算机一般按照取指令、指令译码/执行指令的步骤工作。
在8086/8088 中,指令的提取与执行分别由总线接口部件BIU 与执行部件EU 完成,8086/8088 可以在取指令同时又可以执行指令,这种并行工作方式有力的提高了CPU 的工作效率。
2.6 将两数相加,即0100 1100 加0110 0101,CF、PF、AF、ZF、SF、OF 各为何值?【答】0100 1100+0110 0101=10110001CF=0,PF=1,AF=1,ZF=0,SF=1,OF=12.7 存储器的逻辑地址由哪几部分组成?存储器的物理地址是怎样形成的?一个具有20 位地址线的CPU,其最大物理地址为多少?【答】存储器的逻辑地址由段地址与段内偏移地址组成。
微机原理习题课助教:王骏腾本次习题课中提到的“课本”,均指机械工业出版社的《Intel微处理器(原书第八版)》中文版,使用其他版本课本的同学需要自己对应。
第一章⚫习题33:Core2处理器可寻址____存储器?⚫答案:4GB、64GB、1TB。
(课本P18 表1-6)⚫习题53:IORC信号的作用是什么?⚫答案:I/O读控制,低电平有效(两点都要答上,详细可见课本P20)⚫习题69:什么是Unicode?⚫参考答案:课本P26⚫答案不唯一,批改的重点是Unicode的位数和编码规则第一章⚫补充题1:什么是芯片组?为什么说选择主板主要是选择芯片组?⚫参考答案:通过VLSI技术,将主板上众多的接口电路和支持电路按不同功能分别集成到一块或几块集成芯片之中,这几片VLSI芯片的组合称为“控制芯片组”,简称“芯片组”。
主板控制芯片组是控制局部总线,内存和各种扩展卡的,是整块主板的灵魂所在,CPU对其它设备的控制都是通过他们来完成的。
⚫批改的重点:“集成”、“通过芯片组控制其它设备”⚫补充题2:⚫小端存储:数据高位存在高地址,低位存在低地址⚫数据边界对齐:变量的起始地址必须能被自身数据类型的大小整除,结构体的大小为其最宽基本类型的整数倍第二章⚫习题13:在实模式下,段寄存器装入如下数值,写出每个段的起始地址与结束地址⚫注意:在实模式中,每个段寄存器内容的最右边增加一个0H(即*10H),如此形成了20位存储器地址,实模式下段的长度总是64KB(课本P41)⚫起始地址=段寄存器数值*10H⚫结束地址=起始地址+FFFFH⚫答案: (a) 1000H:10000H-1FFFFH (b) 1234H:12340H-2233FH(c) 2300H: 23000H-32FFFH (d)E000H: E0000H-EFFFFH(e)AB00H: AB000H-BAFFFH⚫习题19:若使用BP寻址存储器,则数据包含在堆栈(SS)段内⚫习题21:Core2在实模式下操作,给出下列寄存器组合所寻址的存储单元地址⚫注意:实模式下段的起始地址,寻址单元地址=段起始地址+偏移地址⚫(a) 2000H*10H+3000H = 23000H⚫(b) 1A00H*10H+2000H = 1C000H⚫(C) C000H*10H+A000H = CA000H⚫(D) 8000H*10H+9000H=89000H⚫(E) 1239H*10H+A900H=1CC90H第二章⚫习题27:一个Pentium4描述符中包含基地址01000000H和界限0FFFFH,且有G=0,由这个描述符寻址的起始地址和结束地址是什么?⚫描述符、基地址、界限、界限粒度等详见课本P45⚫答案:⚫习题37:微处理器工作于保护模式时,将一个新数装入段寄存器时会发生什么?⚫保护模式、段寄存器访问权限等详见课本P45-46⚫参考答案:⚫习题43:页目录中每一个项可把多大的线性存储空间转换为物理存储空间?⚫页目录、内存分页等详见课本P49⚫每个页目录可以访问222= 4MB 物理存储空间第三章⚫习题7:MOV BL,CX 存在什么错误?⚫答案:寄存器长度不匹配,试图16bit -> 8bit⚫习题23:MOV [BX],[DI] 存在什么错误?⚫答案:MOV指令不可以mem->mem传值⚫习题27:选择一条需要QWORD PTR的指令?⚫关于PTR伪指令,详见课本P64,本题没有唯一答案,合理即可。
第三章习题课一、选择题1、在汇编语言程序的开发过程中使用宏功能的顺序就是()。
A、宏定义,宏调用B、宏定义,宏展开C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项就是()。
A、名字项B、操作项C、操作数项D、注释项3、下列叙述正确的就是( )A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令4、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有( )、A、CMPB、SUBC、ANDD、MOV5、测试BL寄存器内容就是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法就是( )。
A TEST BL,4FHJZ NEXTB XOR BL,4FHJZ NEXTC AND BL,4FHJZ NEXTD OR BL,4FHJZ NEXT6、检查BUF的内容就是否为正偶数,如就是正偶数,则令AL=0。
下面程序段正确的就是( )。
A、MOV AL,BUF JS K1SHR AL,1JNC K1MOV AL,0K1:……B、MOV AL,BUF AND AL,11 JNZ K2MOV AL,0K2:……C、MOV AL,BUFTEST AL,81HJNZ K3MOV AL,0K3:……7、下列描述中,执行循环的次数最多的情况就是()。
A.MOV CX,0B.MOV CX,1LOP:LOOP LOP LOP:LOOP LOPC.MOV CX,0FFFFHD.MOV CX,256LOP:LOOP LOP LOP:LOOP LOP8、在下列指令中, 指令的执行会影响条件码中的CF位。
A.JMP NEXTB.JC NEXTC.INC BXD.SHL AX,19、下列指令执行时出错的就是()。
A.ADD BUF1,BUF2B.JMP DWORD PTR DAT [BX]C.MOV AX,[BX+DI] NUMD.TEST AL,08H10、在下列指令的表示中,不正确的就是()。
A.MOV AL,[BX+SI]B.JMP SHORT DONIC.DEC [BX]D.MUL CL11、在进行二重循环程序设计时,下列描述正确的就是()。
A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内B.外循环初值应置外循环之内;内循环初值应置内循环之内C.内、外循环初值都应置外循环之外D.内、外循环初值都应置内循环之外,外循环之内12、下面就是多字节加法程序,第一个数就是8A0BH,第二个数就是D705H。
DA TA SEGMENTFIRST DB (1), (2),0HSECOND DB (3), (4)DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DA TAMOV DS,AXMOV CX, (5)MOV SI,0(6)NEXT: MOV AL,SECOND[SI]ADC FIRST[SI],ALINC SILOOP NEXTMOV AL,0ADC AL, (7)MOV FIRST[SI],ALMOV AH,4CHINT 21HCODE ENDSEND START请选择正确的答案填入空格中:(1)A)8AH B)0BHC)D7H D)05H(2)A)8AH B)0BHC)D7H D)05H(3)A)8AH B)0BHC)D7H D)05H(4)A)8AH B)0BHC)D7H D)05H(5)A)3 B)2C)1 D)4(6)A)CLC B)CLDC)STC D)CLI(7)A)1 B)-1C)0 D)0FFH二、填空题1、指令JMP FAR PTR DONE属于()寻址。
2、检查二个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令就是()3、下面指令序列测试BH中的数就是否为奇数,若为奇数则转移至K1处,横线处的指令应为( )。
TEST BH,01H___K14、循环指令LOOPNZ终止循环的条件就是( )。
5、条件转移指令JNE的测试条件为()。
6、执行如下程序:MOV AX,0MOV BX,1MOV CX,100A:ADD AX,BXINC BXLOOP AHLT执行后 (BX)= ()。
上题的程序执行后(AX)= ()。
7、执行下面的程序段后,AL______。
BUF DW 2152H,3416H,5731H,4684HMOV BX, OFFSET BUFMOV AL, 3XLAT8、就是过程定义结束伪指令,其前面需要加配套使用。
就是段定义结束伪指令,其前面需要加配套使用。
9、设V ALA EQU 200V ALB EQU 30V ALC EQU 1BH下列表达式的值各为多少?(2)(V ALB AND 0FH)OR (V ALB XOR 0FH)(3)(V ALA GE V ALB )AND 0FH三、程序阅读与设计1、设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。
TEST AX,8000H___________MOV PLW,BXJMP DONEK1:____________DONE:2、MOV DL,ALNOT DLTEST DL,04HJE NEXT┇NEXT:…若上述程序段执行时产生分支,说明AL中的数第位一定为1?程序段执行后CF就是?3、下面程序段就是判断寄存器AH与AL中第3位就是相同,如相同,AH置0,否则AH置全1。
试把空白处填上适当指令。
___ XOR AH,AL____AND AH,08H____ JE ZERO_____MOV AH,OFFHJMP NEXTZERO:MOV AH,0NEXT:……4、AND AL,ALJZ BRCH1RCR AL,1JZ BRCH2RCL AL,1INC ALJZ BRCH3: 、、、、、、上述程序运行后,试回答:(1)当(AL)=__________时,程序转向BRCH1(2)当(AL)=_________时,程序转向BRCH2(3)当(AL)=_________时,程序转向BRCH35、下列语句在存储器中分别为变量分配多少字节空间? V AR1 DB 10,2V AR2 DW 5 DUP (?), 0V AR3 DB ‘HOW ARE YOU?’,’$’ V AR4 DD -1, 1, 0V AR1分配的字节空间为 字节;V AR2分配的空间为 字节;V AR3分配的空间为 字节,V AR4分配的空间为 字节。
6、以BUF 为首址的字节单元中,存放了COUNT 个无符号数,下面程序段就是找出其中最大数并送入MAX 单元中。
BUF DB 5,6,7,58H,62,45H,127,…… COUNT EQU $-BUF MAX DB ? ┇MOV BX,OFFSET BUF MOV CX,_____ MOV AL,[BX] LOP1:INC BX _________ __ JAE NEXT MOV AL,[BX] NEXT:DEC CX_____ ________________7、请在图中正确填写执行这些伪指令后数据区的内容STRING1 DB ‘ABCD ’ STRING2 DW ‘ABCD ’8、读下面的程序并要求:(1)在每条语句后给出作用释。
(2)画出程序流程图。
(3)回答该程序完成什么功能?DSEG SEGMENTNUM1 DW 500 DUP(?) NUM2 DB 150 DUP(?) DSEG ENDSCSEGSEGMENTASSUME CS:CSEG,DS:DSEGMAIN PROC RAR START: PUSH DS XOR AX,AX PUSH AX MOV CX,64H MOV BX,300 MOV SI,0 MOV DI,0STRING1STRING2NEXT:MOV AL,BYTE PTR NUM1[BX][SI]ADD AL,ALMOV NUM2[DI],ALINC DIINC SILOOP NEXTRETMAIN ENDPCSEG ENDSEND START答:9、程序中下列语句在编译后装入内存时,操作系统为每个变量分配多少字节存储单元? 前15个字节中的内容就是什么?ABC1 DW 0AHXYZ1 DB 4 DUP(?)STR1 DB “error a!”,“$”STR2 DB “OK!”ABC2 DD 1,2,8150H答:10、试用数据定义语句DB或DW改写下述两语句中的某一个,使它们在存储器中有完全相同的存储情况。
VAR1 DB ‘abcdefghij’VAR2 DW 6162H,6364H,6566H,6768H,696AH答:11、下面程序的功能就是什么?MOV CH,4LAB:MOV CL,4ROL BX,CLMOV DL,BLAND DL,0FHADD DL,30HCMP DL,3AHJL PRINTADD DL,7PRINT:MOV AH,02INT 21HDEC CHJNZ LAB12、阅读如下程序段,回答所提出的问题,假定X1,X2,XN为无符号数。
ORG 100HBLOK DW X1,X2, (X)COUNT EQU($-BLOLOK)/2RESULT DW COUNT,?……LEA BX,BLOK-2MOV CX,RESULTXOR AX,AXGOON:ADD BX,2CMP AX,[BX]JAE NEXTMOV AX,[BX]NEXT:LOOP GOONMOV RESULT+2,AX程序段执行完,回答下述问题RESULT+2字存储单元的内容=______BX=______程序循环次数=______答:13、某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!)、试在空白处填上适当的一条指令。
STRING DB‘COMPUTER’,‘$’┇MOV BX,0FFSET STRINGLOP:MOV DL,[BX]MOV AH,02HINT 21H_____ ____________________________JNE LOP14、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
答:15、现有下列数据段:DATA SEGMENTSTR1 DB‘ABCDEFGHIJKL'COUNT EQU -STR1BUF DB COUNT DUP(0)DATA ENDS下面程序段就是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。