《2022年2022年汇编语言复习题 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年汇编语言复习题 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、汇编语言复习题第 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,其中能用作寄存器间接寻址的寄
2、存有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 个状态标志
3、位分别是OF、SF、ZF、AF、PF 和 CF,反映了刚执行完算术或逻辑运算指令后的某些特征。三个控制标志位是DF即方向标志、IF 即中断标志位和TF陷阱标志。如两个 8 位的二进制数相加其状态标志位中各标志的值是多少?10110101+10011011。4.8086CPU数据总线 16 根 地址总线是20 根能访问的最大存储空间是1MB。第 3 章 存储器的分段1.在 8086CPU中存储器的编址原则是按字节编址即每一个字节单元是一个存储器地址,在源程序中用常用十六进制数或符号来表示一个存储单元的地址。任何相邻的两个字节地址可以构成一个字地址,约定用较小的那个地址来表示字地址。程序员在编程时
4、所用的地址称为逻辑地址,CPU访问的地址称为物理地址。物理地址与逻辑地址的关系是:物理地址=段基值*16+偏移地址。如有下列存储器的结构请按要求回答问题:0002H 的字节地址的内容是多少?0002H 的字地址的内容是多少?若该存储地址所在的数据段的段基值是0F3BH,则逻辑地址为 0004H的物理地址是多少?该物理地址的字单元内容是多少?物理地址是0F3B1H的字节单元内容是多少?名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -2.堆栈是由编程人员用软件在存储器中划出的一块存储区。对堆栈的操作是在栈顶中进行的,由栈指针 SP来指示,堆栈的管理原则是先进后出。堆栈是堆栈
5、段寄存器SS 指定的且在程序中是用段定伪指令来实现的即:STACK SEGMENT STACK DB 200 DUP()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,乘积
6、保存在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.计算机中的指令是由操作码 和操作数 两部分组成。操作码指示计算机所要执行的操作;操作数指出 在指令执行操作的过程中的操作对象。操作数的表示有三种即立即
7、数、寄存器操作数、存储器操作数。汇编语言 是一种用助记符来表示操作码、用符号地址或符号来表示操作数地址或操作数,它与机器指令是一一对应的。3.指出下列指令的寻址方式(源操作数与目标操作数分别说明)P37页教材第3 题 MOV CX,100;源操作数是立即数寻址,目标操作数是寄存器寻址。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -MOV BX+SI,AX;源操作数是寄存器寻址,目标操作数是基址变址寻址。MOV AX,SI+20;源操作数是寄存器相对寻址,目标操作数是寄存器寻址。MOV AX,ARRAY;源操作数是直接寻址,目标操作数是寄存器寻址。MUL BL;源操作数
8、BL是寄存器寻址,隐含的目标操作数AX或 AL也是寄存器寻址。INC WORD PTRBX+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,
9、BP+8;BP+8 是寄存器相对寻址物理地址PA=SS*16+(BP)+8。MOV 10BX+SI,BX;10BX+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,ALFASI;ALFASI 是寄存器相对寻址物理地址PA=DS*16+(SI)+ALFA。MOV AX,2300H;2300H 是直接寻址物理地址PA=DS*16+2300H。MOV AX,BXSI;B
10、XSI是基址变址寻址物理地址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 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -第 5 章 80X86 的指令系统1.要求学生熟练掌握下列指令的功
11、能、语法规则及使用注意事项和用法。传送类指令: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是立即数
12、不能直接送到段寄存器DS中,应先将2000H送入 AX寄存器再由 AX传送给段寄存器DS。XCHG AL,100;非法指令,交换指令的源、目操作数不允许有立即数,应将100 改为 8 位的寄存器或地址。SUB SI,BP;非法指令,双操作数指令中不允许源、目操作数同时为存储器操作数,将SI 或BP修改为寄存器。INC DX;非法指令,DX不能用来表示存储器操作数,能表示存储器操作数的只有BX、BP、SI、DI 四个寄存器。且对存储器操作数还加类型说明。即可修改为INC BYTE PTRSI。MUL 100;非法指令,乘法指令中的源操作数不允许是立即数,应将100 修改为一个8 位的寄存器BL或
13、其它的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,20HBX+SI ;CL=MOV BPDI,CX ;(1E4F6H)=LEA BX,20HBXSI ;BX=MOV AX,2BX ;AX=XCHG CX
14、,32HBX ;CX=XCHG 20HBXSI,AX;(09226H)=4.使用移位指令和乘法指令分别实现乘法的运算,试写出将52 乘以 2 的指令序列。用移位指令实现。MOV AL,52 SHL AL,1 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 9 页 -用乘法指令实现。MOV AL,52 MOV BL,2 MUL BL 5.根据下图回答相关问题。U 1000 中的 U是什么命令?其中的1000 是什么地址?1390:1000 中的 1390 是什么地址:1436 的含义是什么?从图中可ADD AL,30 指令在存储器的存放地址是多少?占多大的空间?6.试分析下面程序段
15、完成什么功能?MOV CL,4 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL 该程序实现了将由DX、AX组成的 32 位数向左移动4 位。7.试写出程序段把DX、AX组成的双字右移4 位的指令序列。MOV CL,4 SHR AX,CL MOV BL,DL SHR DX,CL SHL BL,XL OR AH,BL 8.已知数字0-9 的 ASCII 码表的首地址是在当前数据段中偏移地址为0A80H开始,现要查数字5 的 ASCII码,试写出用指令XLAT进行查找的指令序列。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 9 页 -
16、MOV BX,0A80H MOV AL,5 XLAT 9.写出用单条指令可将累加器AX清零的 4 种方法 MOV AX,0000H AND AX,0000H SUB AX,AX XOR AX,AX 10.将正确答案的字母序号填入横线上。下列指令中操作数在代码段中的是:A 。A、MOV AL,25H B、ADD AH,BL C、INC BYTE PTR DS:25H D、CMP AL,BL 用 MOV 指令将十进制数86 以组合型 BCD码格式送入AX正确的指令是:C 。A、MOV AX,0086 B、MOV AX,0806 C、MOV AX,0086H D、MOV AX,0806H 寄存器间接
17、寻址中,操作数在:C 。A、通用寄存器 B、堆栈 C、主存单元 D、段寄存器 运算类指令的寻址和转移类指令的寻址其不同点在于:A 。A、运算类指令取操作数,转移类指令决定程序的转移地址。B、转移类指令取操作数,运算类指令决定程序的转移地址。C、运算类指令和转移类指令都是取操作数。D、运算类指令和转移类指令都是决定程序的转移地址。直接、间接、立即三种寻址方式指令的执行速度由快至慢的排序是:B 。A、直接、立即、间接 B、立即、直接、间接C、直接、间接、立即 D、不一定 JMP WORD PTRSI+BX的操作数的物理地址是:D 。A、CS*16+(BX)+(SI)B、ES*16+(BX)+(SI
18、)C、SS*16+(BX)+(SI)D、DS*16+(BX)+(SI)分析下列指令序列执行后的正确结果是:D。MOV AX,312CH OR AX,0FFFH A、0FFFFH B、0FFFCH C、0FFF5H D、3FFFH 设 AL=0A8H,CX=2,CF=1。执行 RCL AL,CL指令后 AL=B。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 9 页 -A、51H B、A3H C、47H D、0C5H 下列指令序列执行的结果是:C 。MOV AL,0C2H AND AL;,0F0H A、AL=40H B、AL=20H C、AL=0C0H D、AL=0E0H 数据段
19、DATA的定义如下:DATA DW 1234H 现要把 12H取入 AL 寄存器,则实现该功能的程序段是:C。A、MOV AL,BYTE PTR DATA B、MOV AL,HIGH DATA C、MOV AL,BYTE PTR DATA+1 D、MOV AX,DATA 11.根据要求写出指令或指令序列1)将 AX的内容送到以BX的内容加上100H偏移地址的单元中。2)将堆栈中的内容弹出至DX中。3)定义一符号常量COUNT,其值是 100。4)将 50H、78H、69H、34H、A、0CDH存放到字节变量BUF为首地址的存储单元中。5)将 DX的内容与偏移地址为2000H单元的内容相减结果保
20、存到DX寄存器中。6)将 AX寄存器的内容向左移4 位。7)测试 AX寄存器的内容是正数还是负数。8)完成 100*4 的运算。9)将 88H存入 CL寄存器中。10)将 CL、BL相与后的结果保存到BL寄存器中。11)把 BX寄存器和 DX寄存器中的内容相加,结果存入DX寄存器中。12)以 BX和 DI 寄存器作为基址变址寻址方式,把该单元中的一个字传送到.13)以 DI 和 20H作寄存器相对寻址,将该单元中的内容与CX寄存器中的.14)清除 AX寄存器的内容并同时清除CF标志位。15)将字单元NUM 与 200H 进行比较。以下内容为答案:1)MOV BX+100H,AX 2)POP D
21、X 3)COUNT=100(COUNT EQU 100)4)BUF DB 50H,78H,69H,34H,A,0CDH 5)SUB DX,2000H 6)MOV CL,4 SHL AX,CL 7)CMP AX,0 JS NEXT JNS NEXT 8)MOV AL,100 MOV BL,4 MUL BL 9)MOV CL,88L 10)ADD BL,CL 11)ADD DX,BX 12)MOV AX,BX+DI 13)ADD CX,DI+20H 14)XOR AX,AX (SUB AX,AX)15)CMP NUM 200H 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 9 页
22、-分析下列程序段或程序,回答问题1)执行前 AXC=3355H,BX=4466H,CX=7788H,试分析执行下列指令后AX=?,BX=?CX=?PUSH AX PUSH BX PUSH CX POP AX POP BX POPCX 2)如右图,执行下列各条指令后的寄存器的内容是多少?1.MOV BX OFFSET TAB ;(BX)=0 2.MOV AX,BX ;(AX)=4241H 3.MOV DX,BX+2 ;(DX)=4443H 4.MOV CX,4BX ;(CX)=4645H 5.MOV CL,BYTE PTRBX;(CL)=41H 3)MOV AX,DATA MOV DS,AX 1
23、.该程序完成的主要功能是:在屏幕打印BUF缓冲区的内容。LEA DX,BUF 2.BUF的内容为 Student,则其结果为:Student MOV AH,9 INT 21H MOV AH,4CH INT 21H 4)DATA SEGMENT DA1 DB 0,1,2,3,4,5,6,7,10,9 DA2 DB DUP(?)DATA ENDS 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 9 页 -CODE SEGMENT ASSUME CS:CODE DA:DATA START:MOV DATA MOV DS,AX 1.该程序完成的主要功能是:将DA1+5单元内容复制到DA2
24、中。MOV CX,5 2.DA2为首地址的5 个字单元内容为:5,6,7,10,9 MOV BX,5 MOV SI,0 MOV DI,0 LOP:MOV AL BX+SI+DA1 MOV DI+DA2,AL INC SI INC DI LOOP LOP MOV AH,4CH INT 21H CODE ENDS END START 5)MOV AX,0 MOV BX,2 MOV CL,20 LP:ADD AX,BX ADD BX,2 LOOP LP 1.该程序完成的主要功能有:求以2 开始连续 20 个偶数的和。2.程序执行后,AX=2+4+6 (20 个数)名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 9 页 -