您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 南邮微机期中习题及复习课、课后习题答案
汇编语言习题课及期中课程小结(2013/10/25)RevisedbyDengyulongOct,2013第1次作业(P.15)1。(1)(29.6875)10(2)(10010011)2,(93)16(3)(940)10(4)(01100000)2(对应十进制96,将96变成二进制)(5)(FF)16,(-5B)16(写成(DB)16是原码形式,不是真值)(6)(-0E)16(写成(-E)16严格上讲是不正确的,注意字长为8位),(-72)16,(-71H)16,(8E)16(7)(a)45H或69,无溢出(注意要有计算过程)(b)-6EH或-110,无溢出(c)-46H或-70,无溢出(d)-76H或-118,有溢出容易出错:(1)真值数与原码的差别(2)溢出的判断方法(应使用公式计算)第2次作业(补充)一个有16个字的数据区,它的起始地址为70A0H:DDF6H,请写出这个数据区首末字单元的物理地址。首字单元逻辑地址:70A0H:DDF6H对应物理地址:70A00H+DDF6H=7E7F6H末字单元逻辑地址:70A0H:(DDF6H+30=DDF6H+1EH=DE14H)对应物理地址:70A00H+DE14H=77E814H容易出错:末字单元和末字节单元的含义第2,3次作业(p.85)1.(1)1234H:5678H---179B8H(2)2F34H:2F6H即2F34H:02F6H---2F636H(3)576AH:1024H---586C4H(4)2FD0H:100H即2FD0H:0100H---2FE00H容易出错:(1)16进制加法(2)逻辑地址长度(16位)(p.85)2.寻址方式(1)MOVBX,50寄存器,立即(2)CMP[BX],100CMPBYTEPTR[BX],100间址访问数据段,立即(3)ADD[SI],1000ADDWORDPTR[SI],1000间址访问数据段,立即(4)MOVBP,SP寄存器,寄存器(5)MOVBX,[BP+4]寄存器,基址访问堆栈段(6)MOVAX,[BX+SI+5]寄存器,基+变访问数据段容易出错:(1)段约定(2)寻址方式针对操作数中某一个具体的操作数3.(1)CF23H+C678H=959BH1100111100100011+1100011001111000--------------(1)1001010110011011A=0,C=1,O=0,P=0,S=1,Z=0容易出错:(1)CPU判溢(应使用公式计算)OF=F(Xs,Ys,Zs)(2P,A标志均只针对计算中最低位字节(2)6398H+C678H=2A10H0110001110011000+1100011001111000---------------(1)0010101000010000A=1,C=1,O=0,P=0,S=0,Z=0(3)94FBH+C678H=5B73H1001010011111011+1100011001111000----------------(1)0101101101110011A=1,C=1,O=1,P=0,S=0,Z=0(4)65E2H+C678H=2C5AH0110010111100010+1100011001111000----------------(1)0010110001011010A=0,C=1,O=0,P=1,S=0,Z=04.(1)ORAH,0F0H容易出错:(1)AND与OR指令的具体作用.(2)0F0H写成F0H4.(2)XORBX,0F00FH(3)ANDCX,0FFF0H5.(1)将First/Second按字节方式交换,需要进行2次交换MOVAL,FIRSTXCHGSECOND,ALMOVFIRST,ALMOVAL,FIRST+1XCHGSECOND+1,ALMOVFIRST+1,AL将First/Second按字方式交换,需要进行1次交换MOVAX,WORDPTRFIRSTXCHGWORDPTRSECOND,AXMOVWORDPTRFIRST,AX容易出错:(1)没有完成操作(2)2个内存单元不通过寄存器直接交换(3)字方式交换不使用PTR5.(2)PUSHWORDPTRFIRSTPUSHWORDPTRSECONDPOPWORDPTRFIRSTPOPWORDPTRSECOND容易出错:(1)不使用PTR(2)将直接作为堆栈指令操作数如PUSHFIRST6.TABLEDW158,258,358,458内存单元内容依次为:(从左到右,由低位地址到高位地址)9EH00H02H01H66H01HCAH01HTABLE+0TABLE+1TABLE+2TABLE+3TABLE+4TABLE+5TABLE+6TABLE+7[BX+SI]寻址方式指向的单元为[TABLE+3],取连续2个字节单元的内容---》AXAX中数据为6601H(26113)容易出错:(1)没有将10进制数值转换为16进制数值就开始往下做(2)DB,DW,DD定义的变量在内存单元中具体存放(3)操作时源目的长度匹配7.(1)用16位除法1193182等值16进制为001234DEHMOVDX,0012HMOVAX,34DEHMOVCX,433DIVCXMOVXX,AX(2)用32位除法,无需进行16进制转换MOVEAX,1193182MOVEDX,0MOVECX,433DIVECXMOVXX,AX容易出错:(1)用字节除法但没有进行16进制转换(2)被除数和除数单位未统一。8.(1)最简单的方法(SAL可改用SHL)SALAL,4SALAX,4(2)其他方法(SAL可改用SHL)SALAH,4SALAL,4SHRAL,4ADDAH,AL(或ORAH,AL)或SALAH,4ANDAL,0FHADDAH,AL(或ORAH,AL)容易出错:(1)没有仔细考虑好逻辑计算的过程和结果9.利用C位作为排列中的存储单元MOVCX,8MOVAL,3;假设AL存放中数为03HCIR:SHRAL,1;SHR也可用SAR,RCR,RORRCLBL,1LOOPCIRMOVAL,BL10.(2)下面为完整程序,如果只要求写出程序片段,则写出下面兰色部分即可.486DATASEGMENTUSE16BUFDB50DUP(?)NOTODB50DUP(?)DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVBX,OFFSETBUFMOVSI,OFFSETNOTOMOVCX,50CIR:CMPBYTEPTR[BX],0JZNEXTMOVAL,[BX]MOV[SI],ALINCSINEXT:INCBXLOOPCIREXIT:MOVAH,4CHINT21HCODEENDSENDBEG容易出错:(1)不会使用间接寻址方式访问一个变量的连续单元(2)PTR的使用问题(3)内存单元之间不能直接传送(4)判非零数的方法还可以用MOVAL,[BX]ORAL,AL(或ANDAL,AL)JZNEXT……(5)标号不可以使用汇编语言中的保留字,如寄存器名称等10。(1)完整程序.486DATASEGMENTUSE16BUFDB50DUP(?)PLUSDB50DUP(?)MINUSDB50DUP(?)DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVBX,OFFSETBUFMOVSI,OFFSETPLUSMOVDI,OFFSETMINUSMOVCX,50CIR:MOVAL,[BX]CMPBYTEPTR[BX],0JZNEXTJGTOPLUSMOV[DI],ALINCDIJMPNEXTTOPLUS:MOV[SI],ALINCSINEXT:INCBXLOOPCIREXIT:MOVAH,4CHINT21HCODEENDSENDBEG注意判断正数和负数的方法10。(3)完整程序.486DATASEGMENTUSE16BUFDB50DUP(?)DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVBX,OFFSETBUFMOVCX,50CIR:CMPBYTEPTR[BX],0JGENEXTNEGBYTEPTR[BX]NEXT:INCBXLOOPCIREXIT:MOVAH,4CHINT21HCODEENDSENDBEG注意运用NEG指令求负数绝对值的方法10。(4)完整程序.486DATASEGMENTUSE16BUFDB50DUP(?)DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVBX,OFFSETBUFBTDWORDPTR[BX],31JNCEXITNEGDWORDPTR[BX]EXIT:MOVAH,4CHINT21HCODEENDSENDBEG注意运用NEG指令求负数绝对值的方法(p.101)1.(1)汇编后数据段内容(由左到右,从低地址到高地址)32H,FFH,FAH,57H,9CH,78H,34H,12H,41H,00H注意:负数变成补码,字符变为对应ASCII码2.(1)指令改正MOVAX,BNUM-MOVAX,WORDPTRBNUM执行后AX=FF32HMOVBX,BNUM+5-MOVBX,WORDPTRBNUM+5执行后BX=4478H(其中44H高位字节是相邻来自DNUM变量定义的数据,特别注意LLL常量不占用内存空间)MOVCL,DNUM+2-MOVCL,BYTEPTRDNUM+2执行后CL=22H(2)MOVAX,WORDPTRDNUM+1(或DNUM[1])(3)MOVWORDPTRDNUM,BX(4)INCBYTEPTRWNUM,WNUM为00H,00HINCWNUM,WNUM为00H,01H(体会由PTR运算符体现出的指令的不同操作意图)第4次作业(p.167)1.(1)判断x是否在(5,24]区间假设X为有符号数,该程序中X为无符号数时候相应指令更换JLE-JNA,JG-JAMOVFLAG,-1CMPNUMBER,5JLENEXTCMPNUMBER,24JGNEXTMOVFLAG,0NEXT:...注意:(1)复合分支程序设计(2)程序运行流程(p.67)2.1+…+200=20100,结果需要一个字单元存放SUMDW?MOVCX,200MOVAX,0MOVBX,1AGA:ADDAX,BXINCBXLOOPAGAMOVSUM,AX注意:考虑结果存放需要的容量决定寄存器的选用;注意使用正确的指令来需要完成的操作。二。期中课程小结(主要知识点)一。数制/码制转换1、二进制数,十进制数,十六进制数和BCD码数之间的转换方法等。例:(210.875)10=()2=(D2.E)16(10010111)BCD=(97)10=(01100001)2例:(129)10=(10000001)2=(81)162、真值数和补码数之间的转换方法等例:若[X]补=0AAH,则X的真值为(-86)10例:字长=8位,则[-6]补=(FA)16,若[X]补=E8H,则X的真值为(-1E)163、n位字长的有符号数、无符号数的数值范围设机器数字长=n位,则n位补码数,其真值范围为-2n-1~+2n-1-1位无符号数其数值范围为0~2n-1例:16位二进制数所能表示的无符号数范围是_0~_65535___。@复习作业P.15-1(1)-(6),以及课件范例二。补码运算和判断溢出以及6个状态标志的变化用补码形式完成运算。要求有运算过程,写出运算结果、C,O,A,P,S,Z标志的具体值,并判断结果是有溢出(CPU角度和程序员角度)例:字长8位(+66)+942H+09H=4BHO=0,C=0,A=0,P=1,S=0,Z=0@复习作业P.15-1(7),P8
本文标题:南邮微机期中习题及复习课、课后习题答案
链接地址:https://www.777doc.com/doc-4645939 .html