汇编语言复习题 (2)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言复习题
第2章8086CPU寄存器的结构及使用
1.8086CPU由指令执行部件EU和总线接口部件BIU两部分组成。其中EU的功能是控制和执行指令,主要由算术逻辑部件ALU、EU控制部件、8个16位寄存器和一个标志寄存器FLAGS组成。BIU的功能是从存储器预取指令和数据,以及所有EU需要的总线操作,实现CPU与存储器和外设间信息传递。BIU由指令队列、指令指针寄存器、段寄存器、地址加器组成。
2.Intel8086CPU共有14个16位寄存器,它们分别是通用寄存器8个即AX、BX、CX、DX、SP、BP、SI、DI,其中能用作寄存器间接寻址的寄存有BX、BP、SI和DI,控制寄存器2个即IP、PSW,段寄存器4个即DS、SS、CS和ES它们的含义分别是:
其中在编程过程中程序的段基值由汇编程序装入的段寄存器是SS和CS,由编程者用汇编指令将段基值装入的段寄存器是DS和ES,其具体指令是MOV AX,数据段段/附加数据段名,MOV DS/ES,AX,编程人员不能用指令去取其值或给其设置给定值的寄存器是IP,但是可以通过某些指令的执行而自动修改其内容,如JMP NEXT指令的功能是将目的地址的偏移量送入IP。
3.PSW是程序状态字寄存器又称为标志寄存器,用来反映微处理器在程序运行时的某些状态,其中的6个状态标志位分别是OF、SF、ZF、AF、PF和CF,反映了刚执行完算术或逻辑运算指令后的某些特征。三个控制标志位是DF即方向标志、IF即中断标志位和TF陷阱标志。如两个8位的二进制数相加其状态标志位中各标志的值是多少?10110101+10011011。
4.8086CPU数据总线16根地址总线是20根能访问的最大存储空间是1MB。
第3章存储器的分段
1.在8086CPU中存储器的编址原则是按字节编址即每一个字节单元是一个存储器地址,在源程序中用常用十六进制数或符号来表示一个存储单元的地址。任何相邻的两个字节地址可以构成一个字地址,约定用较小的那个地址来表示字地址。程序员在编程时所用的地址称为逻辑地址,CPU访问的地址称为物理地址。物理地址与逻辑地址的关系是:物理地址=段基值*16+偏移地址。如有下列存储器的结构请按要求回答问题:
①0002H的字节地址的内容是多少?
②0002H的字地址的内容是多少?
③若该存储地址所在的数据段的段基值是0F3BH,则逻辑地址
为0004H的物理地址是多少?该物理地址的字单元内容是多少?
④物理地址是0F3B1H的字节单元内容是多少?
2.堆栈是由编程人员用软件在存储器中划出的一块存储区。对堆栈的操作是在栈顶中进行的,由栈指针SP 来指示,堆栈的管理原则是先进后出。堆栈是堆栈段寄存器SS指定的且在程序中是用段定伪指令来实现的即:STACK SEGMENT STACK
DB200DUP()
STACK ENDS该段是定义了一个大小为200个字节的堆栈且SP的值是200H。堆栈操作是按字进行的如向该堆栈压入2345H、5678H后栈指针SP的值是多少?若用指令来实现的指令序列如下:MOV AX,2345H
MOV BX,5678H
PUSH AX
PUSH BX
即此时的SP=01FCH。
3.根据学所的汇编语言知识在实现下列操作一般使用哪些寄存器
①加法和减法:AX、BX、CX和DX。
②循环计数:CX、DX
③乘法和除法:存放被乘数的寄存器是AX、AL,乘积保存在DX、AX中或AX中;存放被除数的寄存器是DX、AX和AX商存在AX余数在DX或商在AL余数在AH中。
④使用查表指令XLAT:将表首址送到BX寄存器中,查表的偏移量送入AL寄存中,查表的结果保存在AL 寄存器中。
⑤保存段址的寄存器:DS、ES、SS、和CS
⑥表示运算结果为0:PSW程序状态字中ZF标志位进行反映。
⑦将要执行的指令地址:IP寄存器
⑧将要从堆栈中取出数据的地址:SP指针指示寄存器。
第4章数据和指令的寻址方式
1.计算机中的指令是由操作码和操作数两部分组成。操作码指示计算机所要执行的操作;操作数指出在指令执行操作的过程中的操作对象。操作数的表示有三种即立即数、寄存器操作数、存储器操作数。汇编语言是一种用助记符来表示操作码、用符号地址或符号来表示操作数地址或操作数,它与机器指令是一一对应的。
3.指出下列指令的寻址方式(源操作数与目标操作数分别说明)P37页教材第3题
①MOV CX,100;源操作数是立即数寻址,目标操作数是寄存器寻址。
②MOV[BX+SI],AX;源操作数是寄存器寻址,目标操作数是基址变址寻址。
③MOV AX,[SI+20];源操作数是寄存器相对寻址,目标操作数是寄存器寻址。
④MOV AX,ARRAY;源操作数是直接寻址,目标操作数是寄存器寻址。
⑤MUL BL;源操作数BL是寄存器寻址,隐含的目标操作数AX或AL也是寄存器寻址。
⑥INC WORD PTR[BX+30];源操作数是寄存器相对寻址,目标操作数是寄存器相对寻址。
⑦SUB AX,[2000H];源操作数是直接寻址,目标操作数是寄存器寻址。
⑧JMP BX;操作数是段内间接寻址。
⑨MOV AX,[BX+SI+5];源操作数是相对基址变址寻址,目标操作数是寄存器寻址。
⑩MOV AX,BX;源操作数BX是寄存器寻址,目标操作数AX是寄存器寻址。
4.指出下列指令中存储器操作数物理地址的计算表达式,并指出对应的寻址方式P37页教材第4题。
①MOV AL,[DI];[DI]是寄存器间接寻址物理地址PA=DS*16+(DI)
②MOV AX,[BP+8];[BP+8]是寄存器相对寻址物理地址PA=SS*16+(BP)+8。
③MOV10[BX+SI],BX;10[BX+SI]是相对基址变址寻址物理地址PA=DS*16+(BX)+(SI)+10。
④MOV AL,[BX+8];[BX+8]是寄存器相对寻址物理地址PA=DS*16+(BX)+8。
⑤MOV AL,DS:[BP+8];DS:[BP+8]是寄存器相对寻址物理地址PA=DS*16+(BP)+8。
⑥MOV AX,ALFA[SI];ALFA[SI]是寄存器相对寻址物理地址PA=DS*16+(SI)+ALFA。
⑦MOV AX,[2300H];[2300H]是直接寻址物理地址PA=DS*16+2300H。
⑧MOV AX,[BX][SI];[BX][SI]是基址变址寻址物理地址PA=DS*16+(BX)+(SI)。
5.写出把首址为BLOCK的字数组的第6个字送到CX寄存器的指令序列,要求分别使用以下几种寻址方式
①以BX的寄存器间接寻址。
MOV BX,OFFSET BLOCK
ADD BX,0AH
MOV CX,[BX]
②以BX寄存器相对寻址
LEA BX,BLOCK
MOV CX,[BX+0AH]
③以BX、SI的基址变址寻址
LEA BX,BLOCK
MOV SI,0AH
MOV CX,[BX+SI]