存储器和寄存器优秀PPT.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《存储器和寄存器优秀PPT.ppt》由会员分享,可在线阅读,更多相关《存储器和寄存器优秀PPT.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、存储器和寄存器存储器和寄存器第1页,本讲稿共32页4 4一个字在存储器中是如何存放的?一个字在存储器中是如何存放的?答:一个字在存储器中占用相邻的两个存储单元,低8位存入低地址,高8位存入高地址,字单元的地址用它的低地址来表示。5 5为什么要将存储器分段管理?为什么要将存储器分段管理?答:对于16位字长的8086CPU而言,只能表示16位存储器地址(编号从0000HFFFFH);但8086CPU的地址线是20根,最大可寻址1MB的存储空间,其物理地址范围从00000HFFFFFH。为了用16位地址在1MB空间寻址,将1MB存储器空间分成许多逻辑段,这样每个存储单元就可以用段地址:偏移地址来表示
2、其准确的物理位置。段地址是逻辑段在主存中的起始位置,8086规定段地址必须是xxxx0H形式,省略低4位0,段地址就可用16位二进制数表示,通常保存在段寄存器中;偏移地址是存储单元距离段起始位置的偏移值,每个段最大64KB,所以偏移地址也可用16位二进制数表示。这样,物理地址就可通过段地址乘以16加上偏移地址得到第2页,本讲稿共32页6 6程序中的指令与数据在存储器中是怎样存放的?程序中的指令与数据在存储器中是怎样存放的?答:程序中的指令序列存放在代码段中,程序中使用的堆栈存放在堆栈段中,程序中的数据默认存放在数据段中,有时也放在附加段中。第三章第三章1 1 什么是寻址方式?什么是寻址方式?答
3、:在指令中,有时要寻找操作数的地址,有时要寻找转移地址(如转移指令、CALL指令等),这些寻找地址的方式就称为寻址方式。8086微处理器寻找操作数地址有七种方式:立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址等;寻找转移地址的方式有段内寻址和段间寻址,它们又分为段内直接、段内间接、段间直接、段间间接寻址等。第3页,本讲稿共32页2 2 MOV MOV指令有什么特殊规定?指令有什么特殊规定?答:MOV指令是双操作数指令,两个操作数不能同为存储器寻址方式且不能同时为段寄存器,目的操作数不允许用立即寻址方式且不能是代码段段寄存器CS,立即数不能直接送段
4、寄存器等。3 3PUSHPUSH指令和指令和POPPOP指令有什么特点?指令有什么特点?答:这是两个重要的对堆栈操作的指令,它们只能做字操作,它们所带的操作数不能是立即数,POP指令不允许使用CS寄存器。4 4算术移位指令和逻辑移位指令有什么不同?算术移位指令和逻辑移位指令有什么不同?答:算术移位指令一般用于带符号数的乘2或除2运算,正确的运算结果应保证符号位不变;逻辑移位指令用于无符号数的乘2或除2运算,参与移位的操作数的最高有效位并不代表符号位。第4页,本讲稿共32页5 5ADDADD、SUBSUB、NEGNEG等指令执行完毕后,等指令执行完毕后,CFCF和和OFOF的值意味着什么?的值意
5、味着什么?答:CF=1意味着把参与运算的数看作无符号数时,运算出现了错误,同时它确实代表最高有效位有向高位的进位(加法)或借位(减法);OF=1意味着把参与运算的数看作带符号数时,运算出现了错误。也就是说,CF位可用来表示无符号数的溢出,OF位可用来表示带符号数的溢出。6 6乘法指令和除法指令有什么特殊规定?乘法指令和除法指令有什么特殊规定?答:在乘法指令中,隐含使用累加器AL或AX参与运算,两个8位数相乘得到16位乘积,存放在AX中;两个16位数相乘得到32位乘积,存放在DX,AX中。在除法指令中,隐含使用DX,AX或AX做被除数,16位数除以8位数,8位商在AL中,8位余数在AH中;32位
6、数除以16位数,16位商在AX中,16位余数在DX中。7 7逻辑运算指令的主要作用是什么?逻辑运算指令的主要作用是什么?答:逻辑运算指令对处理操作数的某些位很有用,例如可屏蔽某些位(将这些位置0),将某些位置1,将某些位变反,测试某些位等。第5页,本讲稿共32页8 8 串处理指令有什么特殊规定?串处理指令有什么特殊规定?答:在串处理指令中,源串默认在数据段中,但允许使用段跨越前缀来修改,源操作数用SI寻址;目的串只能在附加段中,目的操作数用DI寻址。SI与DI有自动增、减量的功能,可完成正向或反向、字节操作或字操作的串处理。9 9条件转移指令和无条件转移指令有什么不同?条件转移指令和无条件转移
7、指令有什么不同?答:条件转移指令的位移量只允许8位,即目标地址应在本条转移指令的下一条指令地址的-128 +127个字节的范围之内,因此它只能实现段内转移;无条件转移指令则没有此限制,它能够实现段内和段间两种转移,段内转移可使用8位或16位位移量。第6页,本讲稿共32页第四章第四章1 1 指令和伪指令有什么区别?指令和伪指令有什么区别?答:指令是在程序运行期间由计算机来执行的,而伪指令(伪操作)是在汇编程序对源程序进行汇编时处理的操作,完成诸如数据定义、存储器分配、指示程序开始结束等功能。2 2 汇编语言源程序中的变量和标号有哪些属性?汇编语言源程序中的变量和标号有哪些属性?答:源程序中的变量
8、和标号都有三种属性:段、偏移及类型。变量在除代码段以外的其他段中定义,段地址存放在段寄存器中,偏移地址存放在基址或变址寄存器中,变量的类型可以是BYTE(字节)、WORD(字)、DWORD(双字)等;标号指示指令的地址,它的段地址总在CS中,偏移地址在IP中,标号的类型可以是NEAR(近)或FAR(远)。3 3指令指令AND AL,OPR1 AND 0FFHAND AL,OPR1 AND 0FFH中的两个中的两个ANDAND有什么区别?有什么区别?答:第一个AND是操作码,表明这是一条逻辑运算指令,完成逻辑与运算;第二个AND是一个按位操作的逻辑操作符,它只能用于数字表达式。第7页,本讲稿共3
9、2页第五章第五章1 1 在在把把二二进进制制数数以以十十六六进进制制数数的的形形式式在在屏屏幕幕上上显显示示出出来来的的程程序序中中,关关于于显显示字符的示字符的ASCIIASCII码是如何调整的?码是如何调整的?答:在使用DOS功能调用(INT 21H)显示单个字符时,必须得到要显示字符的ASCII码。字符0到9的ASCII码为30H到39H,因此只要把0到9加上30H就可以了;但字符A到F的ASCII码为41H到46H,0AH到0FH除了加上30H之外,还要再加上7。2 2 为什么说循环结构是分支结构的特例?为什么说循环结构是分支结构的特例?答:循环结构在满足循环条件时实行循环,这实际上是
10、多次走同一个分支,当不满足循环条件时,就走另一个分支,因此循环结构是一种特殊的分支结构。3 3 多重循环程序如何编写?多重循环程序如何编写?答:可以利用LOOP指令和转移指令。第8页,本讲稿共32页第六章第六章1 1 子程序调用和返回指令完成哪些操作?子程序调用和返回指令完成哪些操作?答:子程序调用指令首先把子程序的返回地址(即调用程序中CALL指令的下一条指令的地址)存入堆栈,然后转移到子程序的入口地址去执行,它又分为段内调用和段间调用;返回指令的操作是返回地址出栈送IP寄存器(段内或段间)和CS寄存器(段间)。2 2 将过程定义为将过程定义为FARFAR属性,可以段内调用吗?属性,可以段内
11、调用吗?答:不能。如果所定义的过程是FAR属性,那么对它的调用和返回一定都是FAR属性;如果所定义的过程是FAR属性,那么对它的调用和返回一定都是FAR属性。因此只需在定义时考虑它的属性,而CALL和RET的属性由汇编程序来确定。3 3在用堆栈传参的子程序设计中,为什么常用带常数的返回指令?在用堆栈传参的子程序设计中,为什么常用带常数的返回指令?答:在用堆栈传参时,主程序中要把参数的地址压入堆栈,子程序中通过BP寄存器访问堆栈单元取出参数的地址,而不是用出栈的方法。因此为使返回到主程序后堆栈能恢复原始状态不变,要用带常数的返回指令调整SP的值。第9页,本讲稿共32页4 4在用堆栈传参的子程序设
12、计中,为什么要在用堆栈传参的子程序设计中,为什么要PUSH BPPUSH BP?答:这是因为子程序中要用到BP寄存器。在子程序中,为了取得从堆栈传递过来的参数,必须访问堆栈,这就要用到BP寄存器,而BX、SI、DI等寄存器都不能用来访问堆栈。5 5堆栈段定义时,其变量名所指的是堆栈中的哪个位置?堆栈段定义时,其变量名所指的是堆栈中的哪个位置?答:栈底。(P206)6 6过程是否只有调用它的时候才被汇编?过程是否只有调用它的时候才被汇编?答:不是。过程和其他指令一样,在汇编时就被汇编,只是调用时才被使用。第10页,本讲稿共32页7 7宏、伪指令的汇编过程如何?宏、伪指令的汇编过程如何?答:伪指令
13、不是在程序运行期间由计算机执行的,而是在汇编程序汇编期间同汇编程序处理的操作,它们可以完成如处理器的选择、定义程序模式、定义数据、分配存储区、指不程序结束等功能。当源程序被汇编时,汇编程序将对每个宏调用作宏展开。宏展开就是用宏定义体取代源程序中的宏指令名,而且用实参取代宏定义中的形参。8 8有必要将主程序定义为过程吗?(如有必要将主程序定义为过程吗?(如P339P339)答:一般来说,将主程序定义为一个过程并定义为FAR属性,就可以把主程序看作DOS调用的一个子过程。9 9P241P241的的“stack segment at 500h”“stack segment at 500h”的的“at
14、 500h”“at 500h”什么意义?什么意义?答:“at 500h”用来指定堆栈段的段地址(P120)。第11页,本讲稿共32页第七章第七章1 1编程时应如何选择使用子程序结构还是宏汇编结构?编程时应如何选择使用子程序结构还是宏汇编结构?答:使用子程序结构可提高编程效率,节省存储空间。但每次调用子程序,返回、保存及恢复寄存器以及参数的传送等都要增加程序的额外开销。因此,子程序结构适合于子程序代码较长,传参较多,有紧缩存储空间要求的情况下使用。使用宏汇编的程序执行效率较高,但汇编后的目标代码占用存储空间较大。因此,宏汇编一般用于子功能代码较短,传参较少的程序中使用。其实,使用子程序结构还是使
15、用宏汇编结构,并没有固定的标准,大多数情况下,取决于程序员的编程风格。2 2什么是宏?什么是宏?答:宏是源程序中一段有独立功能的程序代码。它只需要在源程序中定义一次,就可以多次调用它,调用时只需要用一个宏指令语句就可以了。第12页,本讲稿共32页3 3宏指令是如何定义的?宏指令是如何定义的?答:定义宏指令称为宏定义,宏定义是用一组伪操作来实现的,其格式为:宏指令名 MACRO 虚参1,虚参2,(宏定义体:一组有独立功能的程序代码)ENDM4 4什么是宏调用?什么是宏展开?什么是宏调用?什么是宏展开?答:在源程序中对宏指令的调用称为宏调用,但对宏指令必须先定义后调用。宏展开是用宏定义体取代源程序
16、中的宏指令名,并且用实元取代宏定义中的哑元的汇编过程。第13页,本讲稿共32页5 5在宏展开时,实参和虚参的个数不等,怎么办?在宏展开时,实参和虚参的个数不等,怎么办?答:汇编程序不要求实参和虚参的个数必须相等,当实参个数大于虚参个数时,多余的实参不予考虑;当实参个数小于虚参个数时,则多余的虚参作“空”处理。6 6宏调用中的实参(实元)可以是表达式吗?宏调用中的实参(实元)可以是表达式吗?答:可以是表达式,还可以是常数、字符串、寄存器、存储单元名以及用寻址方式能找到的地址等,也可以是指令的操作码或操作码的一部分。应注意的是,宏展开后,即用实参取代虚参(又称哑元)后,所得到的汇编语句应该是有效的
17、,否则汇编程序将会指示出错。在MASM6中,还可以用:REQ指定某个参数是必须有的。7 7&操作符及操作符及%操作符应如何使用?操作符应如何使用?答:&操作符可以把前后两个符号合并形成操作码、操作数或是一个字符串。%操作符把跟在它之后的表达式的值转换成当前基数下的数,在宏展开期间,用这个数来取代哑元。第14页,本讲稿共32页8 8.XALL.XALL、.LALL.LALL和和.SALL.SALL有什么区别有什么区别?答:这3个伪操作是列表伪操作,用来控制汇编清单中宏展开的列出方式。一般在LST清单中,使用隐含的.XALL伪操作,它使不产生目标代码的语句在清单中不列出来。.LALL列出包括注释在
18、内的所有宏展开;.SALL则不列出任何展开信息。9 9LOCALLOCAL伪操作的作用是什么?伪操作的作用是什么?答:当宏定义体内的功能代码使用了标号,而在程序中要多次调用该宏定义,此时宏展开后会出现标号的多重定义,这是不能允许的。为了解决这个问题,系统提供了LOCAL伪操作,其格式是:LOCAL 局部标号1,局部标号2,汇编程序对LOCAL伪操作之后的每一个局部标号,在展开时用?0000取代局部标号1,用?0001取代局部标号2,以此类推,这样在展开后的程序中的标号就是唯一的了。第15页,本讲稿共32页1010IRPIRP与与IRPCIRPC的区别是什么?的区别是什么?答:IRP与IRPC是
19、不定重复伪操作,它们的不同之处在于自变量的取代方式。IRP的自变量表用尖括号括起来,每次重复用自变量表中的一项来取代重复块中的哑元。重复次数由自变量表中的自变量个数来确定。IRPC的自变量表必须是字符串,重复次数由字符串中的字符个数确定,每次重复用字符串中的一个字符取代重复块中的哑元。1111使用条件伪操作的目的是什么?使用条件伪操作的目的是什么?答:汇编程序根据条件伪操作能把一个程序段包括在源程序中,或排除在源程序之外,也可以根据不同条件选择不同的程序段进入源程序,这为汇编语言编程提供了很大的便利。1212什么是宏库?宏库的扩展名是什么?什么是宏库?宏库的扩展名是什么?答:包含若干常用宏定义
20、的文件称为宏库,宏库通常用.MAC或.INC作为扩展名。第16页,本讲稿共32页1313下面的语句是什么含义?下面的语句是什么含义?if1 if1 include include macro.macmacro.mac endifendif答:INCLUDE语句说明该应用程序中要用到宏库MACRO.MAC中的宏定义,汇编程序将把MACRO.MAC中的所有宏定义都包含在应用程序中。而条件伪操作IF1语句可使INCLUDE只在汇编的第一遍扫视期间出现,这样宏库的拷贝将不在汇编清单中出现第八章第八章1 1什什么么是是I/OI/O端端口口?CPUCPU使使用用什什么么指指令令与与外外设设进进行行数数据据
21、交交换换?答:CPU与I/O设备通过硬件接口或控制器相连接,这些接口或控制器都有数量不等的端口,这些端口有统一的地址编码,CPU通过这些端口使用输入输出指令IN、OUT与外设进行数据交换。第17页,本讲稿共32页2 2CPUCPU为什么不能用为什么不能用MOVMOV指令进行指令进行I/OI/O数据传输?数据传输?答:在80 x86微机系统中,I/O端口编址在一个独立的地址空间中,它和存储器是完全分离的。因此,对于存储器的存取操作使用MOV指令,而与端口进行信息交换的操作使用专门的I/O指令,二者不能混淆。3使用查询方式进行输入输出的优缺点是什么使用查询方式进行输入输出的优缺点是什么?答:使用查
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储器 寄存器 优秀 PPT
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内