以前的汇编语言期中试题及答案_第1页
以前的汇编语言期中试题及答案_第2页
以前的汇编语言期中试题及答案_第3页
以前的汇编语言期中试题及答案_第4页
以前的汇编语言期中试题及答案_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、汇编语言程序设计期中试题答案1请写出8086CPU内部的16位寄存器的名称和各自的功能?(本题10分)程序可见的寄存器分为通用寄存器、专用寄存器、段寄存器3类。通用寄存器包括数据寄存器(AX、BX、CX、DX)、变址寄存器(SI、DI)、指针寄存器(SP、BP),专用寄存器包括指令指针寄存器(IP)和标志寄存器(FLAGS),段寄存器包括代码段寄存器(CS)、数据段寄存器(DS)、堆栈段寄存器(SS)、附加段寄存器(ES)。1通用寄存器(1)数据寄存器AX(Accumulator)寄存器称为累加器。用途:它是算数运算的主要寄存器,在乘、除(MUL、IMUL、DIV、IDIV)指令中用来隐含地提

2、供被乘数或被除数和存储结果;在扩展指令(CBW、CWD)中隐含地提供被扩展的操作数;在DOD和BIOS功能调用中,用AH存储指定调用功能号,AL存储指定调用子功能号;另外在所有的I/O指令(IN、OUT)中都使用这一寄存器和外部设备传送信息等。所以累加器(AX)使用频度最高,主要用于算术、逻辑运算以及与外设传送信息等。BX(Base Register)寄存器称为基址寄存器。用途:它可以作为普通的通用寄存器来使用,除此之外它常用来存储某一内存单元的偏移地址或偏移地址的一部分,偏移地址又叫有效地址或基地址,这也正是该寄存器名字的由来。它是4个16位数据寄存器中唯一一个能够用来存储存储器偏移地址的寄

3、存器。CX(Count Register)寄存器称为计数器。用途:一般在循环(LOOP)或串重复操作(REP、REPE、REPNE)等指令中用它作为的隐含计数器,控制指令重复循环的次数;在位操作(SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR)中,当移多位时,要用CL寄存器来存放移位的位数。DX(Data Register)寄存器称为数据寄存器。用途:在16位机器中进行32位的算术运算时常用把DX和AX组合在一起存放双字数据,其中AX用来存放双字数据中的低字,而DX用来存放双字数据的高字,该双字可以表示成DX:AX;在进行乘、除运算时,它可作为默认的操作数参与运算和存储运算结果

4、,在I/O指令中当外设端口地址大于255时,必须将外设端口地址存储到DX寄存器中,然后指令采用间接的寻址方式执行指令。(2)变址寄存器SI寄存器和DI寄存器称为变址寄存器(Index Register),它们是16位的寄存器,不能分成8位寄存器。变址寄存器除了可以当做普通的通用寄存器外,主要用途是用于存储某个存储单元的偏移地址或偏移地址的一部分。SI(Source Index)寄存器称为源变址寄存器,DI(Destination Index)寄存器称为目的变址寄存器。在字符串处理指令(MOVS、STOS、LODS、CMPS、SCAS)中,它们的主要用途是SI寄存器用来存储源字符串中字符所存储内

5、存单元的偏移地址,DI寄存器用来存储目的字符串中字符所存储内存单元的偏移地址,并且在执行过程中SI和DI都具有自动增量或减量的功能,无需人工干预。(3)指针寄存器BP和SP寄存器称为指针寄存器(Pointer Register),它们同样是16位的寄存器,也不能分成8位寄存器。指针寄存器除了可以当做普通的通用寄存器外,它们的主要用途:是用于存放堆栈内存储单元的偏移地址。 SP(Stack Pointer)寄存器称为堆栈指针寄存器,它的主要用途是用于存储当前堆栈中栈顶元素的偏移地址,入栈(PUSH)和出栈(POP)指令会自动修改它的值,从而实现访问堆栈中栈顶元素,用它可直接存取堆栈中的数据,该寄

6、存器的内容机器自动修改,无需人工干预,也属于一个专用的寄存器。BP (Base Pointer)为基址指针寄存器,它的主要用途是用于存储堆栈中某一存储单元的偏移地址,从而实现访问堆栈中非栈顶数据。通用寄存器可用于暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些规定的特殊用途。2专用寄存器指令指针寄存器(IP)和标志寄存器(FLAGS),在汇编语言程序中不能直接引用寄存器名,寄存器的内容是由机器自动修改或根据指令执行的结果进行自动设置,不允许用户对它干预。(1)指令指针寄存器IP(Instruction Pointer)称为指令指针寄存器。它的功能是存储下一条将要从主

7、存中取出指令的偏移地址,也就是预取指令在内存中存储单元的偏移地址。在目标程序运行时,它始终指向下一条将要执行的指令,控制器一旦取得这条指令马上就修改IP寄存器的值,使它指向当前执行指令的下一条指令的偏移地址,IP寄存器的内容由微处理器硬件自动设置,程序不能直接访问IP,但一些指令却可改变IP的值,如转移指令(LOOP等)、子程序调用指令(CALL)等。(2)FLAGS寄存器FLAGS寄存器称为标志寄存器,又称为程序状态寄存器(Program status word,PSW),用来反映程序运行时CPU的状态信息,这个寄存器有6个状态(条件)标志位和3个控制标志位,某些指令执行后会对该寄存器的标志

8、位产生影响。图2-17给出了16位标志寄存器的内容,图中没有标明的位暂时未用。1514131211109876543210OFDFIFTFSFZFAFPFCF图2-15 标志寄存器1)状态标志位状态标志位用来记录程序运行结果的状态信息,根据许多指令的执行结果CPU都将相应地自动设置它的值。由于这些状态信息往往作为后续条件转移指令的转移控制条件,所以又称为条件标志位。它包括CF、PF、AF、ZF、SF和OF共6位。标志寄存器的第1位是进位标志CF(Carry Flag),主要用来反映运算结果是否向最高位产生进位(加法)或借位(减法)。如果运算结果的最高位产生了一个进位或借位时,CF位的值被置为1

9、,否则CF位值为0。标志寄存器的第2位是奇偶标志位PF(Parity Flag),用来为机器中传送信息时可能产生的代码出错情况提供检验条件,在数据传送过程中,如果采用奇偶校验的方法来提高数据传送的可靠性,就可使用该标志位。当运算结果的低8位中1的个数是0个或偶数个的时候,PF位的值被置为1,否则PF位值为0。注意,奇偶标志位PF的值只与运算结果的低8位有关,无论运算结果是多少位的。标志寄存器的第4位是辅助进位标志AF(Auxiliary Carry Flag),当进行算数运算时低4位向高4位进位(加法)或借位(减法)时,AF位的值被置为1,否则AF位的值为0。这个标志主要由处理器内部使用,用于

10、十进制算术运算指令中,用户一般不必关心。标志寄存器的第6位是零标志位ZF(Zero Flag),当运算结果等于0时,ZF位的值被置为1,否则ZF位值为0。在判断运算结果是否为0时,可使用此标志位。标志寄存器的第7位是符号标志SF位(Sign Flag),用来记录运算结果的符号位,有符号数据利用最高有效位表示数据的符号,当运算结果为负数,即运算结果的最高位有效位为1时,SF位的值被置为1,否则SF位的值为0。在微机系统中,有符号数采用补码表示,SF位反映运算结果的正负号,运算结果为负数时,SF位的值被置为1,否则SF位的值为0。标志寄存器的第11位是溢出标志位OF(Overflow Flag);

11、用于反映有符号数加减运算所得结果是否溢出。若算术运算的结果有溢出,OF的值被置为1,否则,OF的值为0。其中CF和OF标志位本质上都是表示溢出,CF表示无符号数溢出,即运算结果超过了无符号数的表数范围,OF表示有符号数溢出,即运算结果超过了有符号数的表数范围。以上6个状态标志位,在一般编程情况下,标志位CF、ZF、SF和OF的使用频率较高,而标志位PF和AF的使用频率较低。2)控制标志位控制标志位是用来控制处理器执行指令的方式,它包括TF、DF、IF共3个控制标志位,汇编中有专门的指令来改变他们的值。标志寄存器的第8位是陷阱标志位TF(Trap Flag),又称跟踪标志位(Trace Flag

12、)或称单步标志位,当TF位被置为1时,CPU进入单步执行方式,即执行完一条指令,便产生一个编号为1的内部中断,这种内部中断称为单步中断。这种方式主要用于程序的调试。CPU指令系统中没有专门的指令来改变陷阱标志位TF的值,但程序员可用其它办法来改变其值。在Debug调试程序中,可以用T命令使程序单步运行,可逐一检查各寄存器、存储器的内容,当调试成功后让TF=0,CPU正常工作不产生单步中断。利用单步中断可对程序进行逐条指令的调试。这种逐条指令调试程序的方法就是单步调试。标志寄存器的第9位是中断允许标志位IF(Interrupt-enable Flag),用来决定CPU是否响应CPU外部的可屏蔽中

13、断(INTR)发出的中断请求。当IF位的值为1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求,当IF位的值为0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。注意:IF标志位决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求,而不是决定CPU响应外部的不可屏蔽中断所发出的中断请求,所以不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。CPU的指令系统中有专门的指令来改变标志位IF的值。CLI指令复位中断标志使IF0,STI指令置位中断标志使IF1。标志寄存器的第10位是方向标志DF(Direction Flag),用来决

14、定在串操作指令执行时有关指针寄存器(SI、DI)发生调整的方向。用于串操作指令中,控制地址的变化方向,设置DF0,串操作的存储器地址自动增加;设置DF1,串操作的存储器地址自动减少。在微机的指令系统中,也提供了专门的指令来改变标志位DF的值。CLD指令复位方向标志使DF0,STD指令置位方向标志使DF1。3段寄存器CS寄存器(Code Segment Register),代码段寄存器,CS寄存器的用途是存放代码段的段地址。CS寄存器的内容是当前正在执行的代码段的段地址。SS寄存器(Stack Segment Register),堆栈段寄存器,SS寄存器的用途是存放堆栈段的段地址。SS寄存器的内

15、容是当前要访问的堆栈数据所在堆栈段的段地址。DS寄存器(Data Segment Register),数据段寄存器,DS寄存器的用途是存放数据段的段地址。CS寄存器的内容当前要访问的数据所在数据段的段地址。ES寄存器(Extra Segment Register),附加段寄存器,ES寄存器的用途是存放附加段的段地址。CS寄存器的内容是当前要访问的数据所在附加段的段地址。2请写出内存单元地址、内存单元内容、字内存单元地址、字内存单元内容、访存规则、逻辑段如何划分、逻辑地址、物理地址、逻辑地址如何转换成物理地址的概念?(本题10分)1内存单元地址存储单元地址(内存单元地址)也称为物理地址是指为了C

16、PU能够正确地存取存储单元信息,80X86计算机给每个字节存储单元规定一个唯一的编号来标识这个存储单元,存储单元的唯一的编号就是该内存单元的地址,用无符号数表示,地址从0开始,线性加1。为了书写方便通常用十六进制表示。2内存单元内容存储单元内容(内存单元内容)是指该存储单元中存放的信息。存储单元用地址标识,用“()”表示地址“”内存单元的内容。例如,(12000H)=45H,表示地址是12000H内存单元的内容是45H。3字存储单元地址、内容和访存规则80X86计算机采用被称作“小端对齐”的方案,即(1)地址采用它们的低地址来表示该内存单元地址;(2)访存规则是:低字节在低地址单元,高字节在高

17、地址单元,也就是“低低高高”的规则。所以,一个字存储单元是由内存中连续的两个字节组成,它的地址是两个字节内存单元的低地址,它的内容是按照“低低高高”的访存规则,访问的连续的两个字节内存单元的内容。例如,(12000H)字节=45H,(12001H)字节=23H,所以(12000H)字=2345H。4逻辑段划分规则逻辑段划分规则是:逻辑段的起始地址必须是小段的首地址(16的倍数,即20位物理地址的最低4位必须全是0,用十六进制表示最低1位是0);逻辑段的大小是0B64KB范围内的任意字节。逻辑段是在编写汇编程序是划分的,段的实际大小是该段翻译成机器代码装入内存实际占用的字节数,不超过64KB就行

18、,具体占用内存的那片内存空间由操作系统决定。5逻辑地址和物理地址在1MB的内存空间里,每一个字节存储单元都有一个唯一的20位地址,这个地址就是存储单元的物理地址(Physical Address,简称PA)。逻辑段内每个内存单元地址需要用16位数据表示,这个16的地址我们把它称为逻辑地址(Logical Address)。逻辑地址应该由两部分组成一部分是段地址,令一部分是偏移地址。它的书写形式是:段地址:偏移地址段地址是逻辑段起始地址(小段首地址)的高16位;偏移地址是逻辑段内的某个内存单元地址可以用相对于段起始地址的偏移量(位移量)来表示,以字节为基本单位,用EA表示。6逻辑地址转换成物理地

19、址逻辑地址转换成物理地址计算公式:物理地址=段地址×10H偏移地址用符号表示如下:PA=SA×10HEA3请写出与数据有关的7种寻址方式的书写格式和寻找操作数的过程?(本题10分)立即寻址方式 书写格式:n 寻找操作时的过程:指令代码的一部分。寄存器寻址方 式书写格式:R 寻找操作时的过程:寄存器的内容存储器寻址方式:(1)直接寻址方式 书写格式:n或变量名或变量名 寻找操作时的过程:操作数内存单元的偏移地址EA=n或变量名代表的内存单元地址,默认的段是数据段,物理地址PA=(DS)*16d+EA,操作数是该内存单元的内容(2)寄存器间接寻址方式 书写格式:R 寻找操作时的

20、过程:操作数内存单元的偏移地址EA=(R),除了使用BP寄存器默认的段是数据段,物理地址PA=(DS)*16d+EA,如果使用BP默认的段是堆栈段,物理地址PA=(SS)*16d+EA,操作数是该内存单元的内容。(3)寄存器相对寻址方式 书写格式:XR或X+R 寻找操作时的过程:操作数内存单元的偏移地址EA=X+(R),除了使用BP寄存器默认的段是数据段,物理地址PA=(DS)*16d+EA,如果使用BP默认的段是堆栈段,物理地址PA=(SS)*16d+EA,操作数是该内存单元的内容。(4)基址变址寻址方式 书写格式:BRIR或BR+IR 寻找操作时的过程:操作数内存单元的偏移地址EA=(BR

21、)+(IR),除了使用BP寄存器默认的段是数据段,物理地址PA=(DS)*16d+EA,如果使用BP默认的段是堆栈段,物理地址PA=(SS)*16d+EA,操作数是该内存单元的内容。(5)相对基址变址寻址方式 书写格式:XBRIR或XBR+IR或 X+BR+IR 寻找操作时的过程:操作数内存单元的偏移地址EA=(BR)+(IR)+X,除了使用BP寄存器默认的段是数据段,物理地址PA=(DS)*16d+EA,如果使用BP默认的段是堆栈段,物理地址PA=(SS)*16d+EA,操作数是该内存单元的内容。4从内存物理地址10000H处开始的4个字节单元存放的数据依次是01H、02H、03H、04H,

22、问物理地址10000H处的字节、字和双字单元的内容分别是什么并画出内存示意图?(本题10分) 答: 10000H 01H 10001H 02H 10002H 03H 10003H 04H 10000H字节= 01H 10000H 字= 0201H 10000H 双字=0403 0201H 5在实模式下,逻辑地址2F3E:1020H对应的物理地址是多少?同一物理地址还有其他逻辑地址吗?试举例说明。(本题10分)答:物理地址=30400H 同一物理地址还有其他逻辑地址: 2F3E:1020H 2F3F:1010H 2F40:1000H 2F41:0FF0H 6完成下面运算,并说明运算后标志寄存器6

23、个条件标志位的值是什么?(1)86H+7AH (2)AC34H+B0A7H (3)23H-4CH (4)862AH-5936H(本题10分)答:(1)86H+7AH=00H CF=1;PF=1;AF=1;ZF=1;SF=0;OF=0;(2)AC34H+B0A7H=5CDBH CF=1;PF=1;AF=0;ZF=0;SF=0;OF=1;(3)23H-4CH=D7H CF=1;PF=1;AF=1;ZF=0;SF=1;OF=0;(4)862AH-5936H=2CF4H CF=0;PF=0;AF=0;ZF=0;SF=0;OF=1;7说明下列指令中源操作数的寻址方式。(X1为内存变量,VALUE为常量)

24、答:(1)MOV AX,100 ; 立即寻址 (2)MOV AX,BXSI;基址变址寻址(3)MOV AX, BX ;寄存器寻址(4)MOV CX,VALUEBX ;寄存器相对寻址(5)MOV EBX,ES:1000H ;直接寻址(6)MOV BX,BP;寄存器间接寻址(7)MOV AX,X1;直接寻址(8)MOV AX,VALUEBXDI ;相对基址变址寻址(9)MOV AX, BX;寄存器间接寻址(10)MOV AX, 0100H ;直接寻址(本题10分)8试说明下列指令执行完后,寄存器AX的内容。已知(DS)=1000H,(BX)=2100H,(SI)=02H,(DI)=01H,(ES)

25、=(SS)=2000H,(BP)=2000H,(12000H)=11H,(12001H)=12H,(12100H)=10H,(12101H)=30H,(12102H)=50H,(12103H)=70H,(12104H)=90H,(22000H)=20H,(22001H)=40H,(22002H)=60H,常量VALUE=01H。答:(1)MOV AX,2000H;(AX)=2000H(2)MOV AX,BX;(AX)=(BX)=2100H(3)MOV AX,2102H; (AX)=(12102H)=7050H(4)MOV AX,BX;(AX)=(12100H)=3010H(5)MOV AX,BX+01H ;(AX)=(12101H)=5030H(6)MOV AX,BXSI;(AX)=(12102H)=7050H(7)MOV AX,BPDI;(AX)=(22001H)=6040H(8)MOV AX,DS:BP;(AX)=(12000H)=1211H(9)MOV AX,VALUEBXSI ;(AX)=(12103H)=9070H(10)MOV AX,2000H ;(AX)=(12000H)=1211H

温馨提示

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

评论

0/150

提交评论