南邮微机期中习题及复习课、课后习题答案资料.ppt
南邮微机期中习题及复习南邮微机期中习题及复习课、课后习题答案课、课后习题答案第第1 1次作业次作业 (P.15)P.15)1 1。(1)(1)(29.687529.6875)1010 (2)(2)(1001001110010011)2 2,(9393)1616(3)(3)(940940)1010(4)(4)(0110000001100000)2 2 (对应十进制对应十进制9696,将,将9696变成二进制变成二进制)(5)(5)(FFFF)1616,(-5B-5B)1616(写成(写成(DBDB)1616是原码形式,不是是原码形式,不是真值真值)(6)(6)(-0E-0E)1616(写成(写成(-E-E)16 16 严格上讲是不正确的,注意严格上讲是不正确的,注意字长为字长为8 8位位),(-72-72)16 16,(-71H-71H)1616,(8E8E)1616(7)(a)45H(7)(a)45H 或或 69 ,69 ,无溢出无溢出 (注意要有计算过程)(注意要有计算过程)(b)-6EH(b)-6EH或或 -110,-110,无溢出无溢出 (c)-46H(c)-46H或或-70,-70,无溢出无溢出 (d)-76H(d)-76H 或或 -118,-118,有溢出有溢出容易出错:容易出错:(1 1)真值数与原码的差别)真值数与原码的差别 (2 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)MOV BX,50 寄存器,立即寄存器,立即(2)CMP BX,100 CMP BYTE PTRBX,100 间址访问数间址访问数据段,立即据段,立即(3)ADD SI,1000 ADD WORD PTR SI,1000 间址访问数间址访问数据段,立即据段,立即(4)MOV BP,SP 寄存器,寄存器寄存器,寄存器(5)MOV BX,BP+4 寄存器,基址访问堆栈段寄存器,基址访问堆栈段(6)MOV AX,BX+SI+5 寄存器,基寄存器,基+变变 访问数据段访问数据段容易出错:容易出错:(1)段约定)段约定 (2)寻址方式针对操作数中某一个具体的操作数)寻址方式针对操作数中某一个具体的操作数3.(1)CF23H+C678H=959BH 1100111100100011+1100011001111000-(1)1001010110011011A=0,C=1,O=0,P=0,S=1,Z=0容易出错容易出错:(1)CPU判溢(应使用公式计算)判溢(应使用公式计算)OF=F(Xs,Ys,Zs)(2 P,A标志均只针对计算中最低位字节标志均只针对计算中最低位字节 (2)6398H+C678H=2A10H 0110001110011000+1100011001111000-(1)0010101000010000A=1,C=1,O=0,P=0,S=0,Z=0(3)94FBH+C678H=5B73H 1001010011111011+1100011001111000-(1)0101101101110011A=1,C=1,O=1,P=0,S=0,Z=0(4)65E2H+C678H=2C5AH 0110010111100010+1100011001111000-(1)0010110001011010A=0,C=1,O=0,P=1,S=0,Z=04.(1)OR AH,0F0H容易出错:容易出错:(1)AND与与OR指令的具体作用指令的具体作用.(2)0F0H写成写成F0H 4.(2)XOR BX,0F00FH(3)AND CX,0FFF0H5.(1)将将First/Second 按字节方式交换,需要进行按字节方式交换,需要进行2次交换次交换 MOV AL,FIRST XCHG SECOND,AL MOV FIRST,AL MOV AL,FIRST+1 XCHG SECOND+1,AL MOV FIRST+1,AL 将将First/Second 按字方式交换,需要进行按字方式交换,需要进行1次交换次交换 MOV AX,WORD PTR FIRST XCHG WORD PTR SECOND,AX MOV WORD PTR FIRST,AX 容易出错:容易出错:(1)没有完成操作)没有完成操作 (2)2个内存单元不通过寄存器直接交换个内存单元不通过寄存器直接交换 (3)字方式交换不使用)字方式交换不使用PTR5.(2)PUSH WORD PTR FIRST PUSH WORD PTR SECOND POP WORD PTR FIRST POP WORD PTR SECOND 容易出错:容易出错:(1)不使用)不使用PTR (2)将直接作为堆栈指令操作数)将直接作为堆栈指令操作数 如如PUSH FIRST6.TABLE DW 158,258,358,458 内存单元内容依次为内存单元内容依次为:(从左到右,由低位地址到高位地址)从左到右,由低位地址到高位地址)9EH 00H 02H 01H 66H01H CAH 01HTABLE+0TABLE+1TABLE+2TABLE+3TABLE+4TABLE+5TABLE+6TABLE+7BX+SI 寻址方式指向的单元为寻址方式指向的单元为TABLE+3,取连续,取连续2个字个字节单元的内容节单元的内容-AXAX 中数据为中数据为 6601H (26113)容易出错容易出错:(1)没有将没有将10进制数值转换为进制数值转换为16进制数值就开始往下做进制数值就开始往下做 (2)DB,DW,DD定义的变量在内存单元中具体存放定义的变量在内存单元中具体存放 (3)操作时源目的长度匹配操作时源目的长度匹配7.(1)用用16位除法位除法1193182 等值等值16进制为进制为 001234DE HMOV DX,0012HMOV AX,34DEH MOV CX,433 DIV CX MOV XX,AX(2)用用32位除法,位除法,无需进行无需进行16进制转换进制转换 MOV EAX,1193182 MOV EDX,0 MOV ECX,433 DIV ECX MOV XX,AX 容易出错容易出错:(1)用字节除法但没有进行用字节除法但没有进行16进制转换进制转换 (2)被除数和除数单位未统一。被除数和除数单位未统一。8.(1)最简单的方法)最简单的方法(SAL可改用可改用SHL)SAL AL,4 SAL AX,4(2)其他方法)其他方法(SAL可改用可改用SHL)SAL AH,4 SAL AL,4 SHR AL,4 ADD AH,AL(或或OR AH,AL)或或 SAL AH,4 AND AL,0FH ADD AH,AL(或或OR AH,AL)容易出错:容易出错:(1)没有仔细考虑好逻辑计算的过程和结果没有仔细考虑好逻辑计算的过程和结果9.利用利用C位作为排列中的存储单元位作为排列中的存储单元 MOV CX,8 MOV AL,3 ;假设假设AL存放中数为存放中数为 03H CIR:SHR AL,1 ;SHR也可用也可用SAR,RCR,ROR RCL BL,1 LOOP CIR MOV AL,BL 10.(2)下面为完整程序,如果只要求写出程序片段,则写出下面兰色部分即可)下面为完整程序,如果只要求写出程序片段,则写出下面兰色部分即可.486DATA SEGMENT USE16 BUF DB 50 DUP(?)NOTO DB 50 DUP(?)DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG:MOV AX,DATA MOV DS,AX MOV BX,OFFSET BUF MOV SI,OFFSET NOTO MOV CX,50 CIR:CMP BYTE PTR BX,0 JZ NEXT MOV AL,BX MOV SI,AL INC SI NEXT:INC BX LOOP CIR EXIT:MOV AH,4CH INT 21HCODE ENDS END BEG 容易出错:容易出错:(1)不会使用间接寻址方式访问)不会使用间接寻址方式访问 一个变量的连续单元一个变量的连续单元(2)PTR的使用问题的使用问题(3)内存单元之间不能直接传送)内存单元之间不能直接传送(4)判非零数的方法)判非零数的方法 还可以用还可以用 MOV AL,BX OR AL,AL(或或 AND AL,AL)JZ NEXT (5)标号不可以使用汇编语言中的标号不可以使用汇编语言中的保留字,如寄存器名称等保留字,如寄存器名称等1010。(1)(1)完整程序完整程序.486DATA SEGMENT USE16 BUF DB 50 DUP(?)PLUS DB 50 DUP(?)MINUS DB 50 DUP(?)DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG:MOV AX,DATA MOV DS,AX MOV BX,OFFSET BUF MOV SI,OFFSET PLUS MOV DI,OFFSET MINUS MOV CX,50 CIR:MOV AL,BX CMP BYTE PTR BX,0 JZ NEXT JG TOPLUS MOV DI,AL INC DI JMP NEXT TOPLUS:MOV SI,AL INC SI NEXT:INC BX LOOP CIR EXIT:MOV AH,4CH INT 21HCODE ENDS END BEG注意判断正数和负数的方法注意判断正数和负数的方法10。(3)完整程序完整程序.486DATA SEGMENT USE16 BUF DB 50 DUP(?)DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG:MOV AX,DATA MOV DS,AX MOV BX,OFFSET BUF MOV CX,50 CIR:CMP BYTE PTR BX,0 JGE NEXT NEG BYTE PTR BX NEXT:INC BX LOOP CIR EXIT:MOV AH,4CH INT 21HCODE ENDS END BEG注意运用注意运用NEG指令求负数绝对值指令求负数绝对值的方法的方法10。(4)完整程序完整程序.486DATA SEGMENT USE16 BUF DB 50 DUP(?)DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG:MOV AX,DATA MOV DS,AX MOV BX,OFFSET BUF BT DWORD PTR BX,31 JNC EXIT NEG DWORD PTR BX EXIT:MOV AH,4CH INT 21HCODE ENDS END BEG注意运用注意运用NEG指令求负数绝对值的方法指令求负数绝对值的方法(p.101)1.(1)2.3.汇编后数据段内容汇编后数据段内容(由左到右,从低地址到高地址由左到右,从低地址到高地址)4.32H,FFH,FAH,57H,9CH,78H,34H,12H,41H,00H5.注意:负数变成补码,字符变为对应注意:负数变成补码,字符变为对应 ASCII码码6.2.(1)指令改正指令改正 MOV AX,BNUM -MOV AX,WORD PTR BNUM 执行后执行后 AX=FF32H MOV BX,BNUM+5-MOV BX,WORD PTR BNUM+5 执行后执行后 BX=4478H (其中其中44H高位字节是相邻来自高位字节是相邻来自DNUM 变量定义的数据变量定义的数据,特别注意特别注意LLL常量不占用内存空间常量不占用内存空间)MOV CL,DNUM+2-MOV CL,BYTE PTR DNUM+2 执行后执行后 CL=22H (2)MOV AX,WORD PTR DNUM+1(或或 DNUM1)(3)MOV WORD PTR DNUM,BX (4)INC BYTE PTR WNUM ,WNUM为为 00H,00H INC WNUM,WNUM 为为 00H,01H(体会由体会由PTR运算符运算符 体现出的指令的不同操作意图体现出的指令的不同操作意图)第第4次作业(次作业(p.167)1.(1)判断判断x是否在是否在 (5,24 区间区间2.3.假设假设 X为有符号数为有符号数,该程序中该程序中X为无符号数时候相应指令为无符号数时候相应指令4.更换更换JLE-JNA ,JG-JA5.MOV FLAG,-16.CMP NUMBER,57.JLE NEXT8.CMP NUMBER,249.JG NEXT10.MOV FLAG,011.NEXT:.12.13.注意注意:(1)复合分支程序设计复合分支程序设计14.(2)程序运行流程程序运行流程(p.67)2.1+200=20100,结果需要一个字单元存放结果需要一个字单元存放 SUM DW?MOV CX,200 MOV AX,0 MOV BX,1AGA:ADD AX,BX INC BX LOOP AGA MOV SUM,AX 注意:注意:考虑结果存放需要的容量决定寄存器的选用;考虑结果存放需要的容量决定寄存器的选用;注意使用正确的指令来需要完成的操作。注意使用正确的指令来需要完成的操作。二。期中课程小结(主要知识点)二。期中课程小结(主要知识点)一。数制一。数制/码制转换码制转换1、二进制数,十进制数,十六进制数和、二进制数,十进制数,十六进制数和BCD码数之间的转换方法等。码数之间的转换方法等。例例:(:(210.875)10()2(D2.E )16 (10010111)BCD(97 )10(01100001 )2例例:(:(129)10(10000001 )2(81 )16 2、真值数和补码数之间的转换方法等、真值数和补码数之间的转换方法等例例:若:若X补补0AAH,则,则X的真值为的真值为(-86 )10例例:字长:字长8位,则位,则-6补补(FA )16,若若X补补E8H,则,则X的真值为的真值为(-1E )163、n位字长的有符号数、无符号数的数值范围位字长的有符号数、无符号数的数值范围 设机器数字长设机器数字长=n位位,则则n位补码数位补码数,其真值范围为其真值范围为 2n-1 +2n-11位位 无符号数其数值范围为无符号数其数值范围为 0 2n1 例例:16位二进制数所能表示的无符号数范围是位二进制数所能表示的无符号数范围是_0 _65535_。复习作业复习作业 P.15-1(1)-(6),以及课件范例以及课件范例二。补码运算和判断溢出以及二。补码运算和判断溢出以及6个状态标志的变化个状态标志的变化用补码形式完成运算。要求有运算过程,写出运算结果、用补码形式完成运算。要求有运算过程,写出运算结果、C,O,A,P,S,Z 标志的具体标志的具体值,并判断结果是有溢出(值,并判断结果是有溢出(CPU角度和程序员角度)角度和程序员角度)例例:字长:字长8位位 (+66)+942H+09H=4BH O=0,C=0,A=0,P=1,S=0,Z=0复习作业复习作业 P.15-1(7),P85-3 以及课件范例以及课件范例三。存储空间中三种地址空间的概念以及三。存储空间中三种地址空间的概念以及IO空间的概念,实模式下由逻辑地址得到物理空间的概念,实模式下由逻辑地址得到物理地址地址物理地址计算公式物理地址计算公式:物理地址物理地址=段基址段基址*16+偏移地址偏移地址例:一个有例:一个有16个字节的数据区,它的起始地址为个字节的数据区,它的起始地址为3000H:4567H,则这个数据区首字节,则这个数据区首字节的物理地址是的物理地址是(34567H),最后一个字节的物理地址为,最后一个字节的物理地址为(34576H )。复习作业复习作业P.85-1 四。变量,常量定义以及四。变量,常量定义以及PTR运算符运算符,SEG,OFFSET等伪指令的正确使用等伪指令的正确使用(1)变量在内存中的存放细节)变量在内存中的存放细节(DB,DW,DD)(2)必须使用)必须使用PTR运算符的情形运算符的情形(牢记上课讲义上的双操作书(牢记上课讲义上的双操作书3+单操作数单操作数 2 共共5种情形)种情形)(3)使用)使用PTR运算符后在存取内存操作数时的特点运算符后在存取内存操作数时的特点 复习课件范例以及作业复习课件范例以及作业 P85.-6,P101.-1,2五。五。80486的寻址方式的寻址方式486有有3类类7种寻址方式种寻址方式立即寻址方式:获得立即数立即寻址方式:获得立即数寄存器寻址方式:获得寄存器操作数寄存器寻址方式:获得寄存器操作数存储器寻址方式(存储器寻址方式(5种):获得存储器操作数(内存操作数)种):获得存储器操作数(内存操作数)内存寻址方式内存寻址方式 16位寻址规定可使用的寄存器位寻址规定可使用的寄存器(1)直接寻址直接寻址 (2)寄存器间接寻址寄存器间接寻址 BX,BP,SI,DI 段寄存器:段寄存器:间址寄存器间址寄存器 某单元的物理地址某单元的物理地址=段寄存器内容段寄存器内容16+间址寄存器间址寄存器(3)基址寻址基址寻址 BX,BP 段寄存器段寄存器:基址寄存器基址寄存器+位移量位移量 物理地址物理地址=段寄存器内容段寄存器内容16+基址寄存器基址寄存器+位移量位移量(4)变址寻址变址寻址 SI,DI(5)基址基址+变址寻址变址寻址例:例:16位间接寻址寄存器及约定段位间接寻址寄存器及约定段DS:SI,DI,BX;SS:BP例:指出下列指令源操作数的寻址方式:例:指出下列指令源操作数的寻址方式:ADD AX,SI+6 _变址变址_ MOV AX,BX+SI+6 _基加变基加变_ MOV DX,BX _间址间址_ MOV DX,BX _寄存器寄存器_ MOV AL,-1 _立即立即_SUB AX,WORD PTR BUF _直接直接_ADD DX,BX+4 _基址基址_ADD AX,TABLE _注意注意TABLE是变量还是常量是变量还是常量_复习课件范例以及作业复习课件范例以及作业 P.85.-2六。指令系统六。指令系统指令格式,功能,指令对指令格式,功能,指令对F寄存器的影响,寄存器的影响,D标,标,I标的作用等标的作用等例:例:RET,IRET指令,分别从堆栈中弹出多少个字装入什么寄存器。指令,分别从堆栈中弹出多少个字装入什么寄存器。例:例:MOV 指令的目标寄存器有哪些?指令的目标寄存器有哪些?复习课件范例以及复习课件范例以及 涉及程序编写的作业涉及程序编写的作业七。计算机系统构成及七。计算机系统构成及CPU1.冯氏结构以及现代计算机硬件组成冯氏结构以及现代计算机硬件组成 的的5个部分个部分2.三总线结构三总线结构AB,DB,CB 以及以及 控制信号控制信号 D/C W/R M/IO3.CPU 内部的内部的 基本结构寄存器,名称以及对应容量,以及功能基本结构寄存器,名称以及对应容量,以及功能 八。存储系统八。存储系统(1)存储器分类以及存储器容量的基本单位,)存储器分类以及存储器容量的基本单位,(2)存储器容量与引脚(数据线,地址线)的关系)存储器容量与引脚(数据线,地址线)的关系,(3)存储器容量的扩展方式(字扩展和位扩展,掌握概念)存储器容量的扩展方式(字扩展和位扩展,掌握概念 P.206)复习课件范例复习课件范例九。程序设计和程序阅读九。程序设计和程序阅读()伪指令在程序中的作用和结果()伪指令在程序中的作用和结果(DB,DW,DD变量定义;常量定义;宏指令(变量定义;常量定义;宏指令(使用以及与子程序的区分)使用以及与子程序的区分)(2)完整的源程序的结构(包含伪指令以及语句的使用)完整的源程序的结构(包含伪指令以及语句的使用)(3)常见程序片段的设计方法(分支,循环,代码转换等)常见程序片段的设计方法(分支,循环,代码转换等)例:二进制数,十进制数的显示,分支,循环程序设计等。例:二进制数,十进制数的显示,分支,循环程序设计等。(4)在程序设计中使用子程序)在程序设计中使用子程序(5)功能调用)功能调用(BIOS/DOS)在设计程序输入输出时的应用在设计程序输入输出时的应用举例程序阅读举例程序阅读.486DATA SEGMENT USE16 FIRST DB 12H,34H SECOND DB 56H,78HDATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG:MOV AX,DATA MOV DS,AX PUSH WORD PTR FIRST PUSH WORD PTR SECOND POP WORD PTR FIRST POP WORD PTR SECOND MOV AH,4CH INT 21HCODE ENDS END BEG该程序完成的功能是该程序完成的功能是_FIRST和和SECOND两个变量内容交换两个变量内容交换_例:设例:设BX=1200H,SI=0002H,DS=3000H,(31200H)=50H,(,(31201H)=02H,(31202H)=0F7H,(,(31203H)=90H。请写出下列各条指令单独执行后,有关寄存器。请写出下列各条指令单独执行后,有关寄存器及存储单元的内容。及存储单元的内容。1DEC BYTE PTRSI+1200H 指令执行后指令执行后(31202H)=_F6_H,操作数的寻址方式为操作数的寻址方式为_变址变址_。2MOV AX,WORD PTRBXSI指令执行后,指令执行后,AX=_90F6_H,源操作数的寻址,源操作数的寻址方式为方式为_基加变基加变_。设在数据段有如下定义:设在数据段有如下定义:BUF1 DB 55H,66H,ABCD BUF2 DW11H BUF3 DB 2 DUP(?)写出写出CPU执行代码段的下列指令后的结果:执行代码段的下列指令后的结果:MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF1 MOV BL,BUF1 ;BL=55 H,源操作数为,源操作数为 直接直接 寻址方式寻址方式 ADD BL,BYTE PTRSI+1;BL=BB H,目标操作数为,目标操作数为 寄存器寄存器 寻址方式寻址方式 MOV BYTE PTR BUF2+1,BL ;BUF2=11 H,BUF2+1=BB H。复习课件范例以及作业中涉及编程的部分复习课件范例以及作业中涉及编程的部分十。汇编程序的完整开发过程十。汇编程序的完整开发过程实验操作步骤:实验操作步骤:编辑、编译、链接;每个步骤输出的文编辑、编译、链接;每个步骤输出的文件是什么。件是什么。结束结束