汇编语言期末复习资料.docx

上传人:牧羊曲112 文档编号:3613260 上传时间:2023-03-14 格式:DOCX 页数:11 大小:42.19KB
返回 下载 相关 举报
汇编语言期末复习资料.docx_第1页
第1页 / 共11页
汇编语言期末复习资料.docx_第2页
第2页 / 共11页
汇编语言期末复习资料.docx_第3页
第3页 / 共11页
汇编语言期末复习资料.docx_第4页
第4页 / 共11页
汇编语言期末复习资料.docx_第5页
第5页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《汇编语言期末复习资料.docx》由会员分享,可在线阅读,更多相关《汇编语言期末复习资料.docx(11页珍藏版)》请在三一办公上搜索。

1、汇编语言期末复习资料一、单项选择题(本大题共10小题,每小题3分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.CPU要访问的某一存储单元的实际地址称(C) A. 段地址 B. 偏移地址 C. 物理地址 D. 逻辑地址 2.某存储单元的物理地址是12345H,可以作为它的段地址有(D) A. 2345H B. 12345H C. 12340H D. 1234H 3.执行后使BX=0的同时也使CF=0,OF=0的指令是(A) A. XOR BX,BX B. OR BX,BX C. AND BX,BX D. CMP BX,

2、BX 4.循环控制指令LoopNZ/LoopNE控制循环继续执行的条件是(B) A. CX0且ZF=1 B. CX0且ZF=0 C. CX0或ZF=1 D. CX0或ZF=0 5.在执行DAA指令,当高四位BCD码校正时产生进位,如要把此进位值送入AH中,对这进位值的操作应是(C) A. DAA校正指令的功能已自动加在AH中 B. 进位值在AF中,校正后根据AF内容再加在AH中 C. 进位值在CF中,校正后根据CF内容再加在AH中 D. 进位值在AL最高位上,校正后根据AL最高位内容再加在AH中 6. AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是(C) A. 指令XOR

3、AX,AX执行后,AX内容不变,但设置了标志位 B. 指令OR DX,1000H执行后,将DX最高位置1,其余各位置0 C. 指令AND AX,OFH执行后,分离出AL低四位 D. NOT AX,执行后,将AX清0 7. 在执行下列指令时,需要使用段寄存器DS的指令是(D) A. STOSW B. ADD AL,CL C. NEG BX D. INC DABX 8. 无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是(B) A. ADD BH,01H B. OR BH,01H C. XOR BH,01H D. TEST BH,01H 9. 比较两个带符号的数A、B,当A

4、=B时程序转移,测试的条件为(A) A. ZF=1 B. ZF=0 C. SF=1 D. SF=0 10.下面各传送指令中,正确的是(C) A. MOV DI,SI B. MOVDX+DI,AL C. MOV WORD PTR BX,0100H D. MOV AL,BX 11. 汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法(B) A. 名字的第一个字符可以是大写英文字母及小写英文字母 B. 名字的第一个字符可以是字母、数字及、_ C. 名字的有效长度31个字符 D. 在名字中不允许出现$ 12. 要实现使BETA的值为56,应采用语句为( C ) A .BETA DB 56 B.

5、 BETA DB 56H C. BETA EQU 56 D. BETA EQU 56H 13. REPZ CMPSW指令,重复执行的终止条件是( A ) A. CX=0或ZF=0 B. CX=0且ZF=0 1 C. CX=0或ZF=1 D. CX=0且ZF=1 14. 下面程序段执行后,AL中的内容是( B ) MOV AX,8833H ADD AL,AH DAA A. 21 B .21H C. 0C1H D. 0DDH 15. 比较两个带符号的数A、B,当A=B时程序转移,测试的条件为(A) A. ZF=1 B. ZF=0 C. SF=1 D. SF=0 16. 检查二个无符号数的关系,若要

6、实现ALBL时分支去LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令是( C ) A. JNC LOP1 B. JA LOP1 C. JC LOP1 D. JGE LOP1 17. 在下列串操作指令中,同时使用源串和目的串地址指针的指令是( D ) A. STOSW B. LODSW C. SCASW D. CMPSW 18. 设AL=0AH,下列指令执行后能使AL=05H的是( C ) A. NOT AL B. AND AL,0FH C. XOR AL,0FH D. OR AL,0FH 19. DA1 DWAB,CD,EF,GH( D ) MOV AX,DA1+3 指令执行后AX

7、中的内容是 A. EF B. CD C. BC D. FC 20. 使用DOS系统功能调用时,使用的软中断指令是(B) A. INT 21 B. INT 10H C. NT 16H D. INT 21H 二、简答题 1.简述循环程序常用的控制方法。 解: 技术控制:适用于循环次数已知,包括正计数与倒计数两种。采用循环指令LOOP和JCXZ实现,将最大循环次数置入CX,最后用LOOP对CX减1并判断是否为0。 条件控制:用于循环次数未知。需要用转移指令判断循环条件,转移指令可以指定目的标号来改变程序运行顺序目的标号指向一个重复执行的语句开始或结束,就构成了循环控制结构,循环体为标号语句至转移指令

8、。 混合控制:包括开关控制和逻辑尺控制,前者适用于循环内部有一定规律分支,循环前预置开关走向,结束前设置下一个开关方向。逻辑尺控制适用于内部分支不规律,用位来控制每次循环的操作。 计数控制:循环次数已知,每循环一次+、-1:;常用LOOP指令实现 条件控制:循环次数未知,须根据条件控制循环;用条件转移指令实现 状态控制:根据事先设置或实时检测的状态来控制循环 2.比较参数传递的三种方法,并分析递归调用时为什么不能采用约定存储单元法来传递数据? 寄存器:将入口参数和出口参数放在与约定的寄存器,数据传递速度快,编程方便,节约内存单元,但是寄存器数量有限,适用较少的子程序 约定存储单元:不占用寄存器

9、、参数 2 个数任意,数据都有独立的存储单元,但定义变量有难度。 堆栈:不占用寄存器和存储单元,参数放在公共堆栈区,处理后恢复,注意参数的位置断点保存和恢复。 参数传递的方法主要有约定寄存器法、约定存储器法与堆栈法三种。 1.约定寄存器法 约定寄存器法直接利用CPU内部寄存器传送参数。在转向子程序之前,主程序将入口参数送入指定寄存器中;调用子程序后,子程序从指定寄存器引用这些参数。经加工处理的结果也放入指定的寄存器中,这样从子程序返回主程序后可以从指定的寄存器中获得处理结果。这种方法最简单,但由于寄存器资源有限,故仅适用传递参数较少的情况。 2.约定存储器法 约定存储器法是在存储器中专门指定一

10、些单元存放入口参数和出口参数。在转子程序之 前,主程序用数据传送指令将入口参数存入入口参数的存储单元中。调用子程序后,子程序按照约定从入口参数存储单元中取出这些参数进行处理。子程序完成处理,将处理结果送入指定的出口参数存储单元中,返回后主程序可从这些特定存储单元中获取需要的处理结果。 约定存储器法传送速度比约定寄存器法要慢些,适合于传递参数较多的情况。 3.堆栈法 堆栈法使用堆栈来完成数据传递。在调用子程序之前将参数压入堆栈,转入子程序后通过 sP指针获得压入堆栈的参数地址,从而将其取出。子程序的处理结果亦送入堆栈保存。返回主程序后再通过出栈指令取出结果。使用该方法时应明了堆栈的变化情况,特别

11、注意参数入栈与出栈顺序。 堆栈法适合于参数较多且子程序有嵌套、递归调用的场合。 3.简述外部中断和软件中断的中断过程。 中断是用以提高计算机工作效率、增强计算机功能的一项重要技术。外部中断:当中断源向CPU发出中断请求,CPU接受请求在一定条件下暂停执行原程序进行中断处理,执行完中断服务程序后再返回断点继续执行原程序。软件中断:是一条CPU指令,用以自陷一个中断。由于软中断指令通常要运行一个切换CPU至内核态的子例程,它常被用作实现系统调用. 4.简述循环程序结构的一般组成。 初始化部分:在循环程序的开头,先执行。设置地址指针的初值、计数器的初值及程序中用到的某些寄存器和某些内存单元的初值,只

12、执行一遍。 工作部分:从初始化部分设置的初值开始,动态地反复执行相同的操作,实现循环程序的功能。修改部分:对参加运算的数据或地址指针和记过单元地址指针修改 控制部分:按预定循环次数的执行和正常退出循环。 5.简述多分支程序实现的一般步骤与常用处理方法。 使用条件转移JCC指令和无条件专题JMP指令实现分支程序结构。获得条件变量-对应转换为地址表入口偏移-BX=BX+入口偏移JMPBX跳转到相应位置。常用地址表的方法。无法使用地址表,只能通过多条条件转移指令实现。 6.简述完整子程序结构所包含的内容。 子程序也是一段程序,由文字说明和子程序本身构成。一般由子程序名、子程序的功能。子程序选用的寄存

13、器名和存储单元分配、子程序入口参数、子程序出口参数。 3 三.编写程序,计算两个64位数的和,不考虑和的进位。 由于64位数占用的寄存器比较多,故适合于用约定存储单元法来进行处理。 程序中将64位加数mMl和MM2存放在两个双字单元内。由于不考虑和的进位,所以 和也可用两个双字单元来存放。 程序如下: DATA SEGMENT NUMl DD 1234H,12345678H:M7Ml为123456781234H MM2 DD 432lH,8765432lH:NIM2为87654321432lH SUM DD?,? DATA ENDS STACK SEGMENT PARA STACKSTACK

14、DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA,ES:DArA MAIN PAR:主程序 BEGIN:PUSH DS MOV AX,0 PUSH AX MOV AX,DuA MOV DS,AX MOV ES,AX CALL ADD64;调用子程序ADD64 RET MAIN ENDP :子程序名称:ADD64 ;子程序功能:两个64位数的相加 ;输入参数:MUMl一被加数的地址 ; NUM2一加数地址 :输出参数:SUM一和数地址 ADD64 PROC PUSHF PUSH AX:保护现场 PUSH B

15、X PUSH CX LEA BX,Mmll:Bx指向被加数单元 MOV CX,4 CLC AGAIN: MOV Ax,Bx】;取被加数的相应字一Ax 4 ADc Ax,Bx+8】;与加数相应字相加 MOV ,Ax;保存和 INC BX INC BX LOOP AGAIN POP Cx:恢复现场 POP BX POP AX POPF RET ADD64 ENDP CODE ENDS END BEGIN 四.编写程序,将一个十六位二进制数转换为ASCLL码,并以十进制数形式在屏幕上输出。 DATA SEGMENT BINARY DW 0110110000001100B BUF DW 9 DUP D

16、ATA ENDS STACKI SEGMENT PARA STACK STACK DB 100H DUP STACK ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START PROC FAR; PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX MOV CX, BINARY ;CX CAALL CONV ; CALL DISPLAY ; RET START ENDP ;子程序名称: CONV ;子程序功能: 将CX中十六位二进制数转换为十进制数 ;入口参数: CX ;调用子程序: CHANGE 5 CO

17、NV PROC NEAR PUSH AX PUSH BX PUSH DX PUSH SI LEA BX, BUF MOV AL , 0AH MOV BX , AL ; INC BX MOV AL , CH; OR AL , AL JNS PLUS ; NEG CX ; MOV AL ;- MOV BX , AL ; JMP GOON PLUS: MOV AL , + MOV BX , AL ; GOON: INC BX MOV SI , 10000 ; CALL CHANGE MOV SI , 1000 ; CALL CHANGE MOV SI , 100; CALL CHANGE MOV S

18、I, 10; CALL CHANGE MOV AL , CL ; ADD AL , 30H MOV BX , AL INC BX MOV AL , $; MOV BX , AL POP SI POP DX POP BX POP AX RET CONV ENDP 6 ;子程序名称; CHANGE ;子程序功能; 统计CX中所包含权的个数 ; 并把个数转换为ASCH码 ,存入缓冲区中 ;入口参数: CX ;调用子程序: CHANGE CONV PROC NEAR PUSH AX; PUSH BX PUSH DX PUSH SI LEA BX , BUF MOV AL , 0DH MOV BX, A

19、L; INC BX MOV AL, CH; OR AL, AL JNS PLUS; NEG CX; MOV AL, - MOV BX, AL; JMP GOON PLUS: MOV AL, + MOV BX, AL; CHANGE ENDP ;子程序名称:DISPLAY ;子程序功能: 输出以$结尾的一个字符串 ;调用子程序: 系统09号功能 DISPLAY PROC NEAR PUSH AX MOV DX,OFFSET BUF MOV AH,9 INT 21H POP AX RET DISPLAY ENDP CODE ENDS END START 7 五.编写程序,将输入的大写字母转换为小写

20、字母。 DATAS SEGMENT a db input,0dh,0ah,$ DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: mov ax,DATAS mov ds,ax mov dx,offset a ;定义数据段 mov ah,9h int 21h ;输出“input”,并且让下一位所要显示的显示在下一行 mov ah,1 int 21h ;输入 mov dl,al ;转存输入 sub dl,20h mov ah,2 int 21h ;输出此时的DL中的数值 mov ax,4c00h int 21h CODES ENDS E

21、ND START 六.对两个整数变量A和B,编写程序完成下列功能: 1、若两个数中有一个是奇数,则将奇数送入A单元中,偶数送入B单元中。 2、若两个数均为奇数,则两个数分别加1,并存入原变量中。 3、若两个数均为偶数,则两变量不变。 dseg segment a dw ? b dw ? dseg ends cseg segment main proc far assume cs:cseg,ds:dseg start: push ds sub ax,ax push ax mov ax,dseg mov ds,ax begin: mov ax,a 8 mov bx,b xor ax,bx test ax,0001 jz class test bx,0001 jz exit xchg bx,a mov b,bx jmp exit class: test bx,0001 jz exit inc b inc a exit: ret main endp cseg ends end start 9

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号