汇编语言复习题第2章8086CPU寄存器的结构及使用1.8086CPU由指令执行部件EU和总线接口部件BIU两部分组成。
其中EU的功能是控制和执行指令,主要由算术逻辑部件ALU、EU控制部件、8个16位寄存器和一个标志寄存器FLAGS组成。
BIU的功能是从存储器预取指令和数据,以及所有EU需要的总线操作,实现CPU与存储器和外设间信息传递。
BIU由指令队列、指令指针寄存器、段寄存器、地址加器组成。
2.Intel 8086CPU共有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 STACKDB 200 DUP()STACK ENDS 该段是定义了一个大小为200个字节的堆栈且SP的值是200H。
堆栈操作是按字进行的如向该堆栈压入2345H、5678H后栈指针SP的值是多少?若用指令来实现的指令序列如下:MOV AX,2345HMOV BX,5678HPUSH AXPUSH 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。
③ MOV 10[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 BLOCKADD BX,0AHMOV CX,[BX]②以BX寄存器相对寻址LEA BX,BLOCKMOV CX,[BX+0AH]③以BX、SI的基址变址寻址LEA BX,BLOCKMOV SI,0AHMOV CX,[BX+SI]第5章 80X86的指令系统1.要求学生熟练掌握下列指令的功能、语法规则及使用注意事项和用法。
①传送类指令:MOV、PUSH、POP、XCHG、XLAT。
②算术运算类指令:ADD、ADC、INC、SUB、SBB、DEC、NEG、CMP、MUL、DIV、CBW、CWD。
③逻辑运算和移位类指令;AND、OR、XOR、NOT、TEST、SHL、SHR、SAR、SAL、ROL、ROR、RCL、RCR④条件转移类指令:JZ、JNZ、JS、JNS、JO、JNO、JP、JNP、JC、JNC、JB、JNB、JA、JNA、JG、JNG、JL、JNL、LOOP、CALL、RET。
2.指出下列指令中哪些是非法并说明错误的原因。
① MOV DS,2000H;非法指令,2000H是立即数不能直接送到段寄存器DS中,应先将2000H送入AX寄存器再由AX传送给段寄存器DS。
② XCHG AL,100;非法指令,交换指令的源、目操作数不允许有立即数,应将100改为8位的寄存器或地址。
③ SUB [SI],[BP];非法指令,双操作数指令中不允许源、目操作数同时为存储器操作数,将[SI]或[BP]修改为寄存器。
④ INC [DX];非法指令,DX不能用来表示存储器操作数,能表示存储器操作数的只有BX、BP、SI、DI四个寄存器。
且对存储器操作数还加类型说明。
即可修改为INC BYTE PTR[SI]。
⑤ MUL 100;非法指令,乘法指令中的源操作数不允许是立即数,应将100修改为一个8位的寄存器BL 或其它的8位寄存器也行。
⑥ IDIV [BX];非法指令,除法指令的源操作数应该指明类型是字操作还是字节操作即[BX]前要加上属性操作符如BYTE PTR或WORD PTR。
3.DS=091DH,SS=1E4AH,AX=1234H,BX=0024H,CX=5678H,BP=0024H,SI=0012H,DI=0032H,(09226H)=00F6H,(09228H)=1E40H,(1EAF6H)=091DH,试求单独执行下列指令后的结果。
① NOV CL,20H[BX+SI] ;CL=② MOV [BP][DI],CX ;(1E4F6H)=③ LEA BX,20H[BX][SI] ;BX=MOV AX,2[BX] ;AX=④ XCHG CX,32H[BX] ;CX=XCHG 20H[BX][SI],AX;(09226H)=4.使用移位指令和乘法指令分别实现乘法的运算,试写出将52乘以2的指令序列。
①用移位指令实现。
MOV AL,52SHL AL,1②用乘法指令实现。
MOV AL,52MOV BL,2MUL BL5.根据下图回答相关问题。
①U 1000中的U是什么命令?其中的1000是什么地址?②1390:1000中的1390是什么地址:③1436的含义是什么?④从图中可ADD AL,30指令在存储器的存放地址是多少?占多大的空间?6.试分析下面程序段完成什么功能?MOV CL,4SHL DX,CLMOV BL,AHSHL AX,CLSHR BL,CLOR DL,BL该程序实现了将由DX、AX组成的32位数向左移动4位。
7.试写出程序段把DX、AX组成的双字右移4位的指令序列。
MOV CL,4SHR AX,CLMOV BL,DLSHR DX,CLSHL BL,XLOR AH,BL8.已知数字0-9的ASCII码表的首地址是在当前数据段中偏移地址为0A80H开始,现要查数字5的ASCII 码,试写出用指令XLAT进行查找的指令序列。
MOV BX,0A80HMOV AL,5XLAT9.写出用单条指令可将累加器AX清零的4种方法① MOV AX,0000H② AND AX,0000H③ SUB AX,AX④ XOR AX ,AX10.将正确答案的字母序号填入横线上。