微机系统与接口:微机原理习题课_new1_第1页
微机系统与接口:微机原理习题课_new1_第2页
微机系统与接口:微机原理习题课_new1_第3页
微机系统与接口:微机原理习题课_new1_第4页
微机系统与接口:微机原理习题课_new1_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、微机系统与接口习题课 第1-3章要点小结一、数制与编码补码是计算机所采用的数值存储格式,以后应用时我们约定带符号数均默认为补码。补码使得加减法运算简单了(带符号数的加减法一致性加法时直接进行两数相加,减法时用减数变补码与被减数相加)。可以说补码是使计算机工作“方便了”,使理解起来“麻烦了”。带符号数:原码和反码是人为定义,补码是机器特性!例题习题一.2当下列各二进制分别代表原码、反码和补码时,其等效的十进制数值为多少?11111111 代表原码时, -127 ; 代表反码时,原码是10000000,0 ;代表补码时,原码是10000001,-1 (-128+127)例题习题一.3已知x1=+0

2、010100,y1=+0100001,x2=-0010100,y2=-0100001,试计算下列各式。(字长8位)解:由已知可得x2=-20,y2=-33,则得x2+y2/8=-20-4,x2+y2/8补=-24补=E8H反映在指令系统中MUL(无符号乘法指令)以及IMUL(带符号乘法指令)比较指令:适用于无符号数的JA、JB等条件转移指令与适用于带符号数的JG、JL等条件转移指令。例题设AL,BL都是带符号数,要求当ALBL时转至NEXT处,在CMP AL,BL指令后应选用正确的条件转移指令是()AJBE BJNG CJNA DJNLE 答案:B 有符号数的大小判断二、对标志位的认识与理解容

3、易出错的是(补码的)算数运算后对CFOF的判断;对CF的判别:只要在单步操作后看最高位是否有借位与进位即可, 不用考虑最高位是否被指定为符号位。CF=1表示无符号数运算溢出OF=1表示有符号数运算溢出对OF的判别:课本中对于OF的判别依据为:当算术运算结果超出了带符号数的范围时,即溢出。“正溢出”“负溢出” 01011010B (+90)+01101011B (+107) 11000101B (-59)二进制补码真值 10010010B (-110)+10100100B (-92) 00110110B (+54)二进制补码真值正数相加的结果为负负数相加的结果为正简单判别方法:双高位判别法首先引

4、进两个附加的判别符号,即 CS:表征最高位(符号位)的进位情况。如有进位,则CS=1;否则,CS=0。CP:表征次高位(数值部分最高位)的进位情况。如有进位,则CP=1;否则,CP=0。当CSCP=1 ,必定发生溢出。(异或)其中CSCP为“01”,称其为“正溢出”;当CSCP为“10”,称其为“负溢出”。 01010101B (+85)补+00111100B (+60)补 10010001B 91H真-17显然CS=0,CP=1,则为“正溢出” 10101011B (-85)补+11000100B (-60)补 01101111B 6FH真111显然CS=1,CP=0,则为“负溢出”提示:一

5、个正数与负数相加,结果肯定不溢出例题 习题1.4三、汇编指令汇编语言有三种基本语句:指令语句、伪指令语句、宏指令语句。指令语句操作指令+操作数(可隐含)汇编器如何找到操作数寻址方式:(1)在数据存储器中,指令中如何提供操作数或操作数地址的方式。(2)在程序存储器中,程序转移时需提供转移地址,这也称为寻址。习题二. 1.(7) PUSH 1234H,源操作数寻址方式:直接寻址;无目标操作数例题下面指令中,源操作数的寻址方式为直接寻址的指令是()AADD AX,WORD PTR BX+SI BADD AX,DATA1CINC CX DMOV BX,8FFFH答案:B解释:A为基址加变址;B中DAT

6、A1为一变量,作为存储器操作数;C为寄存器寻址;D为立即数寻址。 例题要点:理解各段与寄存器的概念,正确使用寻址方式。例:(1)直接、间接、立即三种寻址方式的执行速度由快至慢依次为:(2)下列指令中操作数在代码段中的是A.MOV AL,25HB.ADD AL,BHC.CMP AX,BP D.INC DS:BP立即、直接、间接A要点1:寄存器不能随便使用基址与基址(或变址与变址)不能组合在一起寻址。MOV BX,BP+SI(正)MOV AX,BXBP(错)2) 出现AX、CX、DX、SP (都错) MOV IP, AX (错) MOV AX, IP (错) 存储器间不能直接进行操作。(MOV 2

7、000H,BX;CMP BX,SI)段寄存器不能直接进行立即数赋值(MOV DS,0100H),段寄存器之间不能直接进行操作(MOV CS,DS),段寄存器不能进行加减法操作(ADD DS,AX),另外CS不能作为目标操作数。(PUSH CS(正),POP CS(错)) 要点2:操作数类型要明确MOV AX,BLMOV AL,BX反汇编查看:警告:操作数类型不匹配警告就是非法!例题下面的指令中,不合法的是()AMUL BX BMUL BX CMOV AL,02H DMOV AL,BX 答案:B 解释:因为MUL指令可以进行字节或字操作,而B中并未向编译器指明操作数的类型,使得操作不能确定,这时

8、可以利用伪指令BYTE PTR或WORD PTR向编译器传递操作数类型。例题指出下列传送类指令中,哪些是非法指令(1)MOV DS,0100H (2)MOV BP,AL(3)MOV BX,AL(4)XCHG AH,AL(5)MOV AX, DATA1+1(6)OUT 310H,AL(7)MOV BP+DI,AX(8)MOV BX+CX,2130H(9)AND AX,BL(10)ADD AL,BX+DX+10H(11)MOV CS:2000H,AX (12)MOV AX, DATA2-DATA1非法指令:(1),(2),(3),(6),(8),(9),(10)例题 补充注意下列指令都是非法的(1

9、)CMPCF,1 ;symbol not defined(2)MOVAX,CF(3)MOVDATA1SI,DATA2DI(4) MOVDATA1, DATA2(5)SBBAX,BX(6) CMP39,AL(7) MOVAX, DATA1+DATA2另外:(1) MOV BX,OFFSET WORD1(正确,取WORD1的偏移地址赋给BX)(2)要点3:串操作指令注意“先期的准备工作”:对相应的寻址寄存器进行(DS:SI、ES:DI)设置,注意段超越的问题。根据自己的程序决定对存储区的操作方向,即对DF的设置。若要进行重复操作时,一定要设置CX。若要进行ZF的判别,注意判别条件的设置。 例题假设

10、ES段中有一个字符12FG3LM5C,其名为ARRAY,下面的程序段 CLD LEA DI,ES:ARRAY MOV AL,G MOV CX,9REPNE SCASBHLT执行后,CX的值是()。A7 B6 C5 D4答案:C解释:这是在字符串中寻找第一个出现的指定字符的操作,我们将关键的循环串操作的具体的执行步骤表述如下:先做终止判断:如果CX=0或ZF=1则退出,否则往下执行:(2)执行其后的串操作,比较AL与(ES:DI),改变ZF(3)DF=0表示按地址增方向,修正DI(4)CX-1送入CX(5)回到REPNE SCASB要点4:控制转移指令JMP指令分类情况:按段内还是段间以及直接还

11、是间接。可分为以下五类:段内直接短转移:JMP SHORT label8位相对位移量,与下一条指令的地址差 -128127。段内直接近转移:JMP NEAR PTR label 16位相对位移量。 范围-32k32k。相当于间接修改寄器CS、IP的内容段内间接转移:16位相对位移量 JMP reg或JMP memMOV BX, 1000HJMP BXJMP WORD PTR BX+20H段间直接转移:32位相对位移量(CS:IP) JMP FAR PTR label,段间间接转移:32位相对位移量(CS:IP),JMP memMOV SI, 0100HJMP DWORD PTR SI 不能是寄

12、存器25课程中的例题DP1 DD PRC1,PRC2CODE SEGMENT;设CS为8B00H PRC1 PROC FAR;8B00:1000:PRC1 ENDPPRC2 PROC FAR;8B00:2C20:PRC2 ENDP00,10,00,8B,20,2C,00,8B;DP1开始的内容=?00H10H00H8BH20H2CH00H8BHDP18A00:0034H(PRC1)8B00:1000HMYDATA ENDS;DP1的段基8A00H,DP1的偏移量0034H26课程中的例题JMP DWORD PTR DP1 ;=JMP FAR 0034HJMP FAR PTR DP1 ;=JMP

13、 DS:0034HJMP FAR PTR DP1+4 ;=JMP DS:0038H目标地址= 8B00H:1000H00H10H00H8BH20H2CH00H8BHDP18A00:0034H(PRC1)8B00:1000H要点4:控制转移指令所有条件转移指令(JE/JZ/JC/JA/JB)、循环控制指令(LOOP)的操作数都是一个短标号,即位移量在-128127的范围内。 注意:在编制大的循环程序时要注意跳转范围的限制问题,否则会出现以下的编译问题。因此要求在编制程序时要做到短小精悍,简洁易读提示:条件转移指令往往与逻辑指令,移位指令,CMP等指令相配合。习题3.2若WORD1及WORD2均为

14、字变量,ADDITION为标号,请说明下列指令的错误之处:(1)JMP ADDITIONDI(2)JNZ WORD2(3)JMP FAR ADDITION(1)标号无类型(short/near)(2)Jcc 后面只跟代码标号,限短跳转(-128+127)(3)缺PTR例题已知指令JMP SHORT NEXT1在程序中的偏移地址为001EH(注,这是该指令第1字节所在的地址),指令的机器码为0EB03H(其中0EBH为操作码,03H为操作数),执行该指令后程序跳转到的指令偏移地址是什么? 答案:0023H JMP SHORT NEXT1MOV BX,2NEXT1:MOV AX,1跳转偏移量指得是

15、JMP指令的下一条指令到转移去的指令之间的偏移量如果该JMP指令的机器码是0EBE7H可以得知跳转偏移量为0E7H指令JMP SHORT NEXT1是占有2个字节的机器码,那么下一条指令偏移地址为001EH + 0002H =0020H。JMP转移去的偏移地址是JMP的下一条指令偏移地址加上跳转偏移量:可以发现跳转偏移量(0E7H)是一个负值,因此可以得知是跳到程序前端,(减法运算补码化,实际相当于0020H-0019H=0007H) 解释:指令JMP SHORT NEXT1操作码(0EBH)偏移地址:001EH操作数(0E7H)+001FH0020H0007H过程调用指令在运用时强调实现模块

16、化的编程。调用指令(CALL)与返回指令(RET)实现程序模块良好的衔接。分类情况:仍然按段内/段间以及直接/间接。例:已知当前一条近过程过程调用指令CALL near_proc所在的偏移地址为1000H,当前SP=2000H,那么执行完该CALL指令后,堆栈段中(1FFEH)=?答案:03H指令:3个字节解释:首先从已知可知该指令是一段内直接调用过程,指令码是占用3个字节的机器码。执行CALL指令后,系统会将断点地址,即CALL指令的下一条指令的偏移地址(即1003H )压入堆栈。压入堆栈的过程:堆栈指针减2(SP=SP-2),本题原SP=2000H,更新后为SP=1FFEH,而压入的内容(

17、1003H)根据高地址占用高字节,低地址占用低字节的原则,可知(1FFFH)=10H,(1FFEH)=03H。 解释:执行指令前执行指令后03H10HIP=1003HSP=1FFEH四、汇编语言指令系统要点1:理解操作数, 注意区分变量/表达式常量寄存器存储器操作数: 具有段属性、偏移量属性和类属性。标号:在代码段中。变量:存放数据的存储单元的名字,在数据段或堆栈段中。表达式: (由运算符和被操作数组成)汇编时获得。数值表达式:常量和运算符组成,汇编时产生立即数。地址表达式:由常量、变量、标号、寄存器、运算符组成,表示存储器的段内偏移地址。运算符算术(+,-)逻辑(AND,OR)关系(EQ,L

18、T)分析(OFFSET, SIZE)合成(PTR)要点2:注意区分逻辑运算符和逻辑指令。运算符出现在操作数部分,在汇编时完成运算;指令出现在操作码部分,运行exe时由CPU执行。例如:AND AL,12H AND 0FH;等价于AND AL,02H 数值表达式作为操作数标号名和变量名反汇编看不到MOV DATA1, AXJMP NEXT习题3.1设下列指令中的标识符均为字变量,请指出哪些8086/8088指令是非法的:(9)MOV SI,OFFSET WORD2BX指令二义性?MOV SI, 2BXMOV SI, BX+2OFFSET优先级高于+该指令合法!要点3:注意区分字操作和字节操作(1

19、)访问内存时能够自动调整访问规模(非法,但编译器警告)DATA1 DB 01H, 02HMOV AX, DATA1 ;字赋值,高地址-AH,低地址-ALMOV DATA1, AX ;字赋值。(2) 超范围赋值是不安全的(非法,编译器警告) (3)请使用合成运算符PTR安全地改变访问规模warning A4031: Operand types must match伪指令(1)符号定义EQU:定义的是符号名,不能重新定义,常用于定义端口。EQU可以写在程序的任何位置。 (2)数据定义DB,DW,DD:定义的是变量,定义字时要遵循低位低地址,高位高地址的原则。DB/DW/DD只能定义在DATA段中。

20、(3)段定义SEGMENT/ENDS ASSUME(4)过程定义PROG/ENDP(5)模块定义PUBLIC EXTERN(6)宏处理MACRO/ENDM(7)其它伪指令要点4:区别符号名与变量PC55 EQU 282HDATA SEGMENTDATA1 DB ?DATA2 DW PC55+1DATA ENDSMOV DX,PC55;大于等于256时要用DX间址IN AL,DXLEA AX, PC55;错LEA DATA1+2*2;对常用DOS/BIOS调用8086有四种中断:NMI、INTR、异常中断、软中断INT。DOS功能子程序调用(INT 20HINT 27H)其中INT 21H称为D

21、OS系统功能调用。(1)键盘输入并显示(01H号功能调用)(2)直接控制台输入/输出(06H号功能调用)(3)显示或打印输出单个字符(02H号和05H号功能调用)(4)字符串输入(0AH号功能调用)(5)字符串输出(09H号功能调用)(6)终止当前进程,返回调用进程(4CH号功能调用)BIOS系统调用(INT 10)五、汇编程序设计方法汇编程序的格式STACKSEGMENT PARA STACK STACK DB 1024 DUP(0)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK要点1:为什么要遵循固定格式(标准序)?ASSUME CS:CODE, DS:DATA, SS:STACKASSUME伪指令指出各逻辑段所应该装填的地址,但并没有将段

温馨提示

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

评论

0/150

提交评论