微计算机原理(第2版)第三章课后习题答案_第1页
微计算机原理(第2版)第三章课后习题答案_第2页
微计算机原理(第2版)第三章课后习题答案_第3页
微计算机原理(第2版)第三章课后习题答案_第4页
微计算机原理(第2版)第三章课后习题答案_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.专业 .专注 .word 可编辑第三章 80 x86 指令系统3-1 指令由 操作码 字段和 操作数 字段组成 。8086 的指令长度在 16 字节 范围 。3-2 分别指出下列指令中源操作数和目的操作数的寻址方式。 若是存储器寻址 ,使用表达EA=? PA= ?式表示出(1) MOVSI, 2100H(2) MOV CX, DISPBX(3) MOV SI, AX(4) ADCZX, BXSI(5) AND AX, DX(6) MOV AX, BX+10H(7) MOVAX, ES:BX(8)MOV AX, BX+SI+20H(9) MOV BP, CX(10) PUSHDS解:源操作数寻

2、址目的操作数寻址EAPA1) MOV SI, 2100H立即数寻址寄存器(2) MOV CX, DISPBX寄存器相对寻址寄存器BX+SISP(DS)*16+(BX+DISP)(3) MOV SI, AX寄存器寻址寄存器间接SI(DS)*16+(SI)(4) ADC ZX, BXSI基址变址寻址寄存器BX+SI(DS)*16+(BX)+(SI)(5) AND AX, DX寄存器寻址寄存器(6) MOV AX, BX+10H寄存器相对寻址寄存器BX+DISP(DS)*16+(BX)+10H(7) MOV AX, ES:BX带段超越寄存器寻址寄存器BX(ES)*16+(BX)(8) MOV AX,

3、 BX+SI+20H相对基址变址寻址寄存器BX+SI+20H(DS)*16+(BX)+(SI)+20H(9) MOV BP, CX寄存器寻址寄存器间接BP(SS)*16+(BP)(10) PUSH DS固定寻址寄存器SP(SS)*16+(SP)3-3 已知 8086 中一些寄存器的内容和一些存储器单元的内容如图 3-1 所示 , 试指出下列各条指令执行后 ,AX 中的内容 。MOV AX, 2010H(2) MOV AX, BX(3) MOV AX, 1200H(4) MOV AX, BX(5) MOV AX, 1100HBX(6) MOV AX, BXSI(7) MOV AX, 1100HB

4、X+SI(8) MOVLEA AX, SI解:(1)( AX ) =2010H( 2)( AX) =0100H(3)(AX ) =4C2AH(4)(AX)=3412H(5)( AX) =4C2AH(6)( AX)=7856H(7)( AX )=65B7H (8 )( AX )=0002HM30100H12H30101H34H30102H56H30103H78H31200H2AH31201H4CH31202HB7H31203H65HCPUBX0100HSI0002HDS3000H图 3-13-4 已知 (AX)=2040H,(DX)=380H, 端口(PORT)=(80H)=1FH ,( POR

5、T+1)=45H, 执行下列指令后 ,指出结果等于多少 ?解:(1)OUT DX, AL(2)OUT DX, AX(3)IN AL, PORT(4)IN AX, 80H(5)OUT PORT1, AL(6)OUT PORT1, AX(0380H)=40H(380H)=40H (381h)=20H(AL)=1FH(AX)=451FH(PORT1)=40H(PORT1)=2040H3-5 已知 : (SS)=0A2F0H,(SP)=00C0H,(AX)=8B31H,(CX)=0F213, 试画出下列指令执行到位置 1 和位置 2 时堆栈区和 SP指针内容的变化示意图 。 图中应标出存储单元的实际地

6、址 PA。 PUSH AXPUSH CX ;位置 1POPF ; 位置 2解:已知(SS)=0A2F0H ,指令顺序依次编号为 、, 示意图如图所示(SS)=0A2F0H0A2FBCH13H (SP)-4=00BCH (位置 1)F2H0A2FBEH31H( SP)-2=00BEH (SP)+2=00BCH +0002H=00BEH ( 位置2)8BH0A2FC0H(SP)=00C0H3-6 识别下列指令的正确性 , 对错误的指令 , 说明出错的原因.专业 .专注 .(17)word 可编辑(1) MOV DS, 100MOV 1000H, 23HMOV 1000H,2000HMOV DATA

7、, 1133HMOV 1020H, DXMOV AX, 0100H+BX+BPMOV CS, AXPUSH ALPUSH WORD PTRSIIN AL, 80H 解:,不能对段寄存器送立即数(2),存储单元类型不正确(3 ),MOV 不能实现两个存储单元间 直接传送,段名不能作目的操作数,立即数不能作目的操作数,基址寄存器 BX 和 BP 只能使用其 中一个,CS 不能用作目的操作数(8 ),堆栈操作作为字操作 AL 应改为 AXOUT CX, ALIN AX, 380HMOV CL, 3300HMOV AX, 2100HBPMOV DS, ESMOV IP, 2000HPUSH CSPOP

8、 CSLDS CS, BXMOV GAMMA, CS (9)(10 ),80H 为输入端口号不加方括号( 11 ), 应输出到端口而不是通用寄存器(12),用DX做间址寄存器 380H 应存DX( 13 ),类型不匹配(14)( 15 ),两个段寄存器间不能直接传送( 16 ),IP 不能直接用作目的操作数.专业 .专注 .word 可编辑(18 ),CS 不能做目的操作数 能是段寄存器 CS(19 ),目的操作数应是通用寄存器而(20),符号名不能作为目的操作数不3-7 已知存储器数据段中的数据如图3-3 所示 。阅读下列的两个程序段后 ,回答:每个程序段的运行结果是什么 ?两个程序段各占多

9、少字节的内容 , 执行时间是多少 ?(1 ) LES SI, NUM1 (2)MOV AX, SIADD AX, 4SIMOV 8SI, AXADD SI, 2MOV AX, SIADC AX, 4SIMOV AX, NUM1ADD AX, NUM2MOV SUM, AXMOV AX, NUM1+2ADC AX, NUM2+2MOV SUM+2 , AXMOV 8SI, AX解: 1、运行结果如下( 1) 0AC6863A0H(2) 0AC6863A02、时钟周期 字节数1 ) LES SI, NUM12+EA24MOV AX, SI103ADDAX, 4SI9+EAMOV8SI, AX10A

10、DDSI, 24MOVAX, SI10ADCAX, 4SI9+EAMOV8SI, AX10(2) MOV AX, NUM1 10ADDAX, NUM29+EAMOVSUM, AX9+EAMOVAX, NUM1+29+EAADCAX, NUM2+29+EAMOVSUM+2 , AX9+EA3M34NUM148HDS341H2416H2428HNUM258H322H2452H2484H24SUM242424图 3-33-8 已知数据如图 3-3 所示 ,数据的低位在前 , 按下列要求编写程序段 :完成 NUM1 和单元 NUM2 两个字数据相加 ,和存放在 NUM1 中 。完成 NUM1 单元开始

11、的连续 4 个字节数据相加 ,和不超过一字节 ,存放 SUM 单元 。完成 NUM1 单元开始的连续 8个字节数据相加 ,和 16 位数,放在 SUM 和 SUM+1 两个 单元 ( 用循环 )。完成 NUM1 和 NUM2 的双倍精度字数据相加 , 和放在 NUM2 开始的字单元中 。解:1、CLCLEASI, NUM1MOVAX, WORD PTR SIADDAX, WORD PTR NUM2MOVWORD PTR SI, AXMOVAX, WORD PTR SI+2ADCAX, WORD PTR NUM2+2MOVWORD PTR SI+2, AXHLT2、LEASI, NUM1MOVA

12、L, SIADDAL, 1SIADDAL, 2SIADDAL, 3SIMOVSUM, ALHLT3、CLCCLDLEA SI, NUM1MOVMOVMOVXORAGA: MOVADCINCDECJNZMOVHLTAL, SIAH, 0CX, 7BH, BHBL, 1SIAX, BXSICXAGASUM, AX4、LEA SI, NUM1LEADI, NUM2MOVAX, SIADDAX, DIMOVDI, AXMOVAX, 2SIADCAX, 2DIMOV2DI, AX3-9 已知的 BCD 数如图 3-3 所示 ,低位在前 ,按下列要求编写计算 BCD 数据 (为组合型BCD) 的程序段 。

13、完成从 NUM1 单元开始的连续 8 个组合型 BCD 数相加 , 和( 超过一字节 ) 放在 SUM 和 SUM+1 两个单元中 。完成 NUM1 单元和 NUM2 单元的两个 BCD 数相减 ,其差存入 SUM 单元,差= ?, (CF)=?解:1、CLCCLDLEA SI, NUM1MOV CX, 7MOV AH, 0MOV AL, SIAGA: INC SIADC AL,SIDAALOOP AGAMOV SUM, ALMOV SUM+1 , AHHLT2、CLCMOV AH, 0MOV AL, NUM1SUB AL, NUM2DASMOV SUM, AL差=0F0H=-10H, CF=

14、13-10 写出下列程序段完成的数学计算公式 , 并画出数据存放的示意图XX+2YY+2ZZ+2WW+2MOV AX, XMOV DX, X+2ADD AX, YADC DX, Y+2SUB AX, ZSBB DX, Z+2MOV W, AXMOV W+2 , DX解: W=X+Y-Z, 数据存放如图所示3-11 已知数据如图 3-3 所示 ,低位在前 ,按下列要求编写程序段NUM1 和 NUM2 两个数据相乘 (均为无符号数 ), 乘积放在 SUM 开始的单元 。NUM1 和 NUM2 两个字数据相乘 (均为无符号数 ), 乘积放在 SUM 开始的单元 。3. NUM1单元的字节数据除以13

15、(均为无符号数 ), 商和余数依次放入字节单元。4. NUM1单元的字节数据除以NUM2 字单元的字 ,商和余数依次放入节单元 。解:1. 为 32 位 32 位,极为 64 位2. MOVAX, NUM1IMULNUM2 ;积在(DX) (AX)中MOVSUM, AXMOVSUM+2 , DXSUM 开始的两个SUM 开始的两个字MOV AL, NUM1CBWMOV CL, 0DHDIV CLMOV SUM, ALMOV SUM+1 , AHMOV AX, NUM1CWDIDIV NUM2MOV SUM, AXMOV SUM+2 , DX3-12 (L 略 )3-13 已知(AL)=0C4H

16、 ,DATA 单元中的内容为 5AH ,写出下列每条指令单独执行后的结果。1. ANDAL, DATA5. AND AL, 0FH2. ORAL,DATA6. OR AL, 01H3. XORAL, DATA7. XOR AL, 0FFH4. NOTDATA8. TEST AL, 80H解;1. (AL)=01000000B=40H5. (AL)=04H2. (AL)=0DEH6. (AL)=0C5H3. (AL)=10011110B=9EH7. (AL)=3BH4. (DATA)=0A5H8. (AL)=0C4H,OF=0,CF=03-14 用移位循环指令 , 编写完成以下功能的程序段 (

17、结果放回原处 )1. 将无符号数 83D 分别乘 2 和处 2.2. 将带符号数 -47D 分别乘 2 和除 2.3. 将图 3-3 中 NUM1 双字乘 2 和除 2.4. 将图 3-3 中从 NUM1 开始的 4 个字乘 2.解:1. MOVAL, 53HSHLAL, 1MOVAL, 53HSHRAL, 12. MOVAL, 0D1HSALAL, 1MOVAL, 0D1HSARAL, 13. MOVAX, NUM1MOVDX,NUM1+2SHLAX, 1RCLDX, 1MOVAX, NUM1MOVDX, NUM1+2SARDX, 1RCRAX, 14. SAL NUM1 , 1RCL NU

18、M1+2 , 1RCL NUM1+4 , 1RCL NUM1+6 , 13-15 编写完成以下功能的程序段 ,并指出运行后 ,其标志 CF、ZF、SF和 OF 的状态是什 么?1. BCD 数 58 32无符号数 3AH 3AH带符号数 79( 57 )带符号数 32+ ( 42)解:1. MOV AL, 58HSUB AL, 32HDASCF=0 ,ZF=0 , SF=0 , OF=02. MOV AL, 3AHSUB AL, 3AHCF=0 ,ZF=1 ,SF=0,OF=0已知 X=79D,Y=57D 则【X】补 =01001111 ,【Y】补 =11000111所以 X补 Y补 =X 补

19、+-Y 补=10001000MOV AL, 79MOV BL, -57SUB AL, BLCF=0 , ZF=0 ,SF=1,OF=1MOV AL, 0F3HMOV BL, 2AHADD AL, BL或者MOV AL, 0F3HADD AL, 2AHCF=0 , ZF=0 ,SF=0,OF=03-16 用循环移位指令实现下列功能 ,设( AX)=0C3H设 ( CL) =8 ,移位前 、后 AX 内容不变2. 设 ( CL) =9 ,移位前 、后 AX 内容不变将 AX 中高 4 位和低 4 位交换位置将 AX 中高 4 位放到低 4 位上 ,而高 4 位置 0 解:1. MOV CL, 8R

20、OL AL, CL(或者 ROR AL, CL)MOV CL, 9RCL AL,CL(或者 RCR AL, CL)3. MOVBX, AXANDAX, 0FF0HXCHGBH, BLMOVCL, 4ROLBH, CLROLBL, CLANDBH,0F0HANDBL, 0FHOR AX, BX4. 本小题可以多种解法解 1 :5. MOVBX, AXANDAX, 0FF0HXCHGBH, BLMOVCL, 4ROLBH, CLROLBL, CLANDBH,0ANDBL, 0FHORAX, BX解 2:MOVBX, AXXCHGAH, ALMOVCL, 4RORAX, CLSHRAH, CLAND

21、AL, 0FHANDBL, 0FOHOR AL, BL3-17 写出下列程序段执行后的结果 :( AL) = ?( DL) = ?完成的是什么功能 ?MOV CL,4MOV AL,87MOV DL, ALMOV AL,0FHOR AL,30HSHR DL,CLOR DL,30H解:完成与、或、移位等逻辑运算 ,运算结果 :(AL)=37H;(DL)=35H3-18 用乘法指令和用传送 、移位 、相加指令分别实现 Y=10X 的运算 ,设 X=12H ,分别编 写这两个程序段 。解:1) MOVAL, XMOVCL, 10NULCL(2) MOVAL, XSALAL,1;(AL)=2*XMOVB

22、L, AL;(BL)=X*2SALAL, 1;(AL)=4*XSALAL, 1;(AL)=8*XADDAL, BL;(AL)=8*X+2*X=10*X3-19写出下面指令序列完成的数学计算是什么 ?MOVCL, 3SHLAX, CLSHLBL, CLSHLCX, CLSHLDH, CL解:将一多精度数 (6 字节)乘以 83-20 写出下列能代替重复串操作指令完成同样功能的指令序列(1)REPMOVSW(2)REPCMPSB(3)REPSCASB(4)REPLODSW(5)REPSTOSB解:(1)LEASI, AREA1LEADI, AREA2MOV CX, NCLDAGA: MOV AX,

23、 DS:SIMOV ES:DI, AXINCSIINCSIINCDIINCDIDECCXJNZAGARET(2)LEASI, VAR1LEADI, VAR2MOVCX, NCLDNEXT:CMPSBJNZFINLOOPNEXTRET(3)MOVDI, OFFSET COMMANDMOVAL, MOVCX, NCLDNEXT: SCASBJZ FOUNDLOOP NEXTRET(4) MOV SI, OFFSET BUFMOV CX, NCLDNEXT: LODSWMOVLOOPRET(5) MOVMOVCLDNEXT: STOSBDECRES, AXNEXTDI,OFFSET BUFCX, N

24、CXJNZ NEXTRET3-21 欲将数据段中自 AREA1 中的 100 个字数据搬到附加段中以 AREA2 开始的区中 , 用下面的 3 种传送指令编写程序段 :用 MOV 指令 ;2. 用基本串传送指令 ;3. 用重复串传送指令解:1.LEASI, AREA1LEADI, AREA2MOVCX, 100CLDAGAIN:MOVAX, SIMOVES:DI, AXINCSIINCSIINCDIINCDIDECCXJNZAGAINRET2.MOVSI, OFFSETAREA1MOVDI, OFFSETAREA2MOVCX, 100CLDAGAIN: MOVSAREA2, AREA1DEC

25、CXJNZ AGAINRET3. MOVSI, OFFSETAREA1MOVDI, OFFSETAREAA2CLDMOVCX, 100REP MOVSBRET3-22 假定在数据段中已知字符串和未知字符串的定义如下 :STRING1 DB MESSAGE AND PROCCESS STRING2 DB 20 DUP(?)用串操作指令编写完成下列功能的程序段 (设 DS和 ES重叠);从左到右把 STRING1 中的字符串搬到 STRING2 中 ;从右到左把 STRING1 中的字符串搬到 STRING2 中 ;搜索 STRING1 字符串中是否有空格 。如有,记下第一个空格的地址 ,并放入

26、BX 中;比较 STRING1 和 STRING2 字符串是否相同 。解:1. MOVSI, OFFSET STRING1MOVDI, OFFSET STRING2MOVCX, 20;共 20 个字符CLD; 从左到右就是增址方向 , 设置 DF 0REPMOVS STRING2 , STRING12. MOVSI, OFFSET STRING1+13HMOVDI, OFFSET STRING2+13HMOVCX, 20STD;从右到左为减址方向 , 设置 DF0REPMOVS STRING2+13H, STRING1+13H3.MOVDI, OFFSET STRING1MOVCX, 20MO

27、VAL, 20H;空格字符的ASCII 码CLDREPNZ SCASBJZ FOUNDMOVDI, 0JMPDONEFOUND; DECDI;因 SCASB 的功能是 :(1)( AL )(2)DIDI+1MOVBX, DIDENE:HLT4.MOVSI, OFFSET STRING1MOVDI, OFFSET STRING2MOVCX, 20CLDREPZCMPSBJNZUMMATMOVAL, 0JMPOUTPUTDIUMMAT: MOV AL, 0FFHOUTPUT: MOV RESULT, ALRET3-23 下面两条短转移指令的转移地址 ADDR1 和 ADDR2 分别是多少 ( 用十

28、六进制表 示)?1. 0220 EB 0A JMP ADDR10230 EB F7 JMP ADDR2解:1. e 为当前 IP 与目的地址的距离 。已知位移量 e的计算公式 :e=目的地址 (IP源+2),即0AH= 目的地址 ( IP 源+23 )=ADDR1 0222H所以 , ADDR1=0AH+0222H=022CH ( 正向转移 )2. e= 目的地址 ( IP 源+2 )0F7H=ADDR2 0232H所以 ,ADDR2=0F7H+0232H=0229H ( 负向转移 )3-24 NEAR JMP, SHORT JMP,LOOP 和条件转移指令的转移范围是多少 ?解:(1)NEA

29、R JMP :目标地址距 JMP指令+32767 32768 字节范围以内 。(2)SHORT JMP :目标地址距 JMP指令+127 128 字节范围以内 。(3)LOOP:所转去的目标地址在 +127 128 字节范围以内 ,为 LOOP SHORT_LABEL (4)条件转移指令 : 目的地址 OPRD 为近标号 , 即转向的目标地址必须在转移指令的 +127 128 字节范围以内 。2-25 设 AX 和 CX中的内容为无符号数 ,BX和 DX中的内容为带符号数 ,试用 CMP 指令 和条件转移指令实现以下判断 :1.若(AX)超过 (CX), 则转至 BIGER。 2. 若(BX)(DX),则转至 BIGE。若(CX)低于(AX), 则转至 LESS。 4. 若(DX) (BX),则转至 LESS。若(AX)=(CX), 则转至 EQUAL。解:1. CMP AX, CXJA BIGER2. CMP BX, DXJG BIGERCMP CX, AXJB LESSCMP DX, BXJL LESSCMP AX, CXJZ EQUAL3-26 (略)3-27试编写一个程序段,能完成下列数学表达式的功能1(X -1)X0 ( -1X1)1(X 1)解 1 :MOVAL, XCMPAL,-1JLEANS1CMPAL,1JL ANS2JMPAN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论