收藏 分销(赏)

汇编语言程序设计模拟题.doc

上传人:xrp****65 文档编号:7039925 上传时间:2024-12-25 格式:DOC 页数:8 大小:85KB
下载 相关 举报
汇编语言程序设计模拟题.doc_第1页
第1页 / 共8页
汇编语言程序设计模拟题.doc_第2页
第2页 / 共8页
点击查看更多>>
资源描述
中国地质大学(北京)继续教育学院 2012年09课程考试 《汇编语言程序设计》模拟题 一.单项选择题 1.段寄存器( B )给定了当前可使用附加数据段的段首址。 A.DS B.ES C.SS D.CS 2.在语句"MOV AX,5[BX+SI]"中, 源操作采用的是( D )寻址方式。 A. 直接 B. 寄存器间接 C. 变址 D. 基址加变址 3.SBB指令的功能为( B )。 A. (OPD)-(OPS)→OPD B. (OPD)-(OPS)-CF→OPD C. (OPS)-CF→OPD D. (OPD)-CF→OPD 4.若有符号数运算结果溢出,则( A )位置1。 A.OF  B.CF  C.ZF  D.SF 5.使用串操作指令时,目的串一定要放在当前( C )中。 A.代码段 B.数据段 C.附加数据段 D.堆栈段 二.填空题 1、 LOOP指令的转移范围是 0-255个字节 。 2、 如果END伪指令后面带有符号地址,这个符号地址即为该程序运行时的 启动地址 。 3、 如果在当前堆栈段中用SI作指针,则应该用 SS: 进行说明 4、 在使用OUT指令时,如外设端口地址大于255,则应先把该地址送入 DX 寄存器中。 5、已知(AX)、(BX)均为无符号数,在“CMP AX,BX”之后使用转移指令JBE L _可使(AX)£(BX)时转L处执行 三.改错题 1.SAL AX,2 SAL AX,1 2. LEA POINT,BUF LEA SI,BUF 3.IDIV AX,10 MOV BX,10 IDIV BX 4.POP BL POP BX 5.ADD [BX],[SI] ADD BX,[SI] 6. CWD AX,DX CWD 7.MOV DX,5[SI+DI] MOV DX,5[BX+DI] 8. OUT DX,‘A’ MOV AL,‘A’ OUT DX,AL 9.STACK SEGMENT PARA PUBLIC ‘STACK ;定义堆栈段 STACK SEGMENT PARA STACK ‘STACK’ 10.TEST AX,01H ;测试AX最高位 TEST AX,8000H 11.DEC [DI] DEC [DI] DEC WORD PTR [DI] 12.CWD AX, DX CWD AX, DX CWD 13.OUT DL, ‘$’ OUT DL, ‘$’ MOV AL, ‘$’ OUT DX,AL 14. MOV SI,AL MOV SI,AL MOV SI,AX 15. MOV CX, [BX+BP] MOV CX, [BX+BP] MOV CX, [BX+SI] 16. MOV DS, DATA MOV DS, DATA MOV AX, DATA 17. SHL AX,3 SHL AX,3 SHL AX,CL 18. AND AX,[CX] AND AX,[CX] AND AX,[BX] 19. 执行DOS10号功能调用往BUF缓冲区输入字符串后,输入串首址应在BUF+1中。 BUF+2 20. 若无符号数相加结果溢出,则OF位置1。 CF 四.简答题 1.简述宏指令与子程序的区别。 答: 定义的方式不一样; 执行的时间不一样,子程序是在运行.EXE文件时被执行的,而宏指令是在汇编期间被执行的; 参数传递的方式不同。 2.已知(AX)=0FBADH,执行以下语句序列后,(AX)=? XCHG AH,AL OR AX,0FF00H 答:(AX)=0FFFBH 3.如何计算待取出指令的物理地址? 答:(IP)左移四位+(CS) 4.已知AX和BX中均为无符号数且需(AX)>(BX)时转NEXT处执行: CMP AX,BX (   ) NEXT 可在括号内填入哪几种转移指令? 答: JA或JEA 5.已知两数补码分别为:[X1]补=00010101B, [X2]补=10100110B, 计算[X1]补+[X2]补后, ZF和SF各为多少? 答:ZF=0, SF=1 6. 已知(DX)=7AF8H,执行“OR DX,0F0F0H”后(DX)=? 答:0FAF8H 7.已知(SS)=2000H,(SP)=1000H,栈顶的物理地址为多少? 答:21000H 8. 如果需要往STR缓冲区输入字符串,在下列程序段的空白处应填入什么指令? TT MACRO A,B LEA DX,A MOV AH,B INT 21H ENDM ┇ STR DB 80,0,80 DUP(0) ┇ __________ 答:TT STR, 10 五.编写程序段 1. 已知数据段如下: DATA SEGMENT DATA1 DW -7935,12BCH,0 DATA2 DB -12,25H STR0 DB ‘DWCMLWOM $CM ┅’ COUNT EQU $-STR0 DATA ENDS 请根据题目要求编写程序段。 1) DATA2中的全部数据压入堆栈中。 2) 算(DATA1)×(DATA1+2)+DATA1→DATA1+2、DATA+4中。 3) 请用串操作指令在STR0串中查找字符‘W’出现的次数 →DL。 4) 请写出将STR0字符串在显示器上当前光标位置输出的程序段。 5) 判断DATA1中的第15位与第7位是否同时为0,为0转ZERO处执行,否则返回DOS。 2)MOV AX,DATA1 IMUL DATA1+2 MOV BX,AX MOV CX,DX MOV AX,DATA1 CWD ADD AX,BX ADC DX,CX MOV DATA1+4,DX MOV DATA1+2,AX 3)LEA DI,STR0 MOV CX,COUNT MOV AL,’W’ MOV DL,0 P0: REPNE SCASB CMP CX,0 JE END0 INC DL JMP P0 END0:…… 1)MOV AL,DATA2 CBW PUSH AX MOV AL,DATA2+1 MOV AH,0 PUSH AX 5)MOV AX,DATA1 AND AX,8080H JE ZERO MOV AH,4CH INT 21H ZERO: …… 4)LEA DI,STR0 MOV CX,COUNT A: MOV DL,[DI] INC DI MOV AH,2 INT 21H LOOP A 2. 已知D盘MASM子目录下有一存在的文件WAN. ASM,编写打开该文件的程序段,打开成功0→AX,否则,-1→AX,最后返回操作系统。 答:┇ F DB ‘D:\MASM\WAN.ASM’,0 ┇ LEA DX,F MOV AH,3DH MOV AL,2 INT 21H JC ERR MOV AX,0 JMP ROS ERR: MOV AX,-1 ROS: MOV AH,4CH INT 21H 3. 已知数据段中有语句“A DW -160,0”,请分别用乘法指令和移位指令实现(A)*16 → A和A+2中(注:不考虑溢出)。 答:① MOV AX,A MOV CX,16 IMUL CX MOV A,AX MOV A+2,DX ② MOV CL,4 SAL A,CL 4.请写出分别将AX、BH中的有符号数和CL中的无符号数顺序压入系统堆栈的程序段。 答:PUSH AX MOV AL,BH CBW PUSH AX MOV CH,0 PUSH CX 七.阅读程序并回答问题 1.该程序的功能是什么? 2.请写出子程序SUBP的入口参数和出口参数。 3.若在子程序SUBP中漏写了“POP BX”,该子程序能正确返回吗?为什么? DATA SEGMENT OUTF DB 0AH,0DH,0,0,’H’,0AH,0DH,’$’ DATA ENDS ┆ REP: MOV AH,1 INT 21H CMP AL,’0’ JB EXIT CMP AL,’9’ JA EXIT LEA SI,OUTF+2 CALL SUBP LEA DX,OUTF MOV AH,9 INT 21H JMP REP EXIT: MOV AH,4CH INT 21H SUBP PROC PUSH BX MOV AH,0 MOV BL,16 DIV BL ADD AL,30H MOV [SI],AL INC SI ADD AH,30H MOV [SI],AH POP BX RET SUBP ENDP ┆ 答:1. 功能:等待从键盘输入一个字符,如为数字字符,则在下一行输出其十六进制的ASCII 码,再等待输入下一字符;如为其它字符,则转结束。 2. 入口参数: AL:存放从键盘输入的一个字符 AH:被除数高位 BL:要转换的进制(除数) SI:存放转换后的两位ASCII码指针 出口参数: 无 3. 不能返回,因为此时栈顶的内容是(BX),而不是返回主程序的偏移地址 八.编程题 1. 往BUF1和BUF2两缓冲区中分别输入字符串,请使用串操作指令比较这两个串是否相等,如相等则在下一行显示“The two stringe are equal!”;如不相等则在下一行显示“The two stringe are not equal!” 说明:① 画出主程序的流程图。 ② 写出寄存器的使用分配情况。 ③ 写出关键语句的注释。 寄存器使用分配: SI:取原串字符指针 DI:取目的串字符指针 BL:存放BUF2串长度 CX:存放BUF1串长度 DX:DOS中断调用 答:IO MACRO A,B LEA DX,A MOV AH,B INT 21H ENDM DATA SEGMENT BUF1 DB 80,0,80 DUP(0) BUF2 DB 80,0,80 DUP(0) T1 DB 0AH,0DH,’the two stringe equal !’ T2 DB 0AH,0DH,’the two stringe not equal !’ DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME CODE:CS,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX 送数据段首址 MOV ES,AX IO BUF1,10 输入两个字符串 IO BUF2,10 MOV CL,BUF1+1 MOV BL,BUF2+1 比较两串长度是否相等 CMP CL,BL JNE NO_EQU ; 不等转NO_EQU LEA SI,BUF1 LEA DI,BUF2 MOV CH,0 长度相等,则比较两串字符是否相等 REPZ CMPSB JNE NO_EQU ; 不等转NO_EQU IO T1,9 ; 显示两串相等 JMP EXIT NO_EQU: IO T2,9 ; 显示两串不相等 EXIT: MOV AH,41H ; 返回DOS INT 21H CODE ENDS END START 2. 在以ARR为首址的数组中存放着若干个十六位无符号非0数,最后以0作结束标志。统计该组数中奇数的个数送ODD单元、偶数的个数送EVEN0单元中。试编其程序。 要求:1. 画程序框图 2. 编写源程序 3. 写出寄存器的使用分配情况 4. 写出关键语句的注释。 答:DATA SEGMENT ARR DW 1,2,3,4,5,6,7,8,9,0;已知数组 ODD DW 0 ;奇数个数单元 EVEN0 DW 0 ;偶数个数单元 DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX LEA SI,ARR MOV CX,0 ;偶数计数器 MOV DX,0 ;奇数计数器 NEXT: MOV AX,[SI];取一待判断的数送AX ADD SI,2 CMP AX,0 JE PP ;如该数为0转结束处理 AND AX,1 ;如不为0,判断最后一位是否为0 JE EVEN1 ;为0,转偶数计数 INC DX ;不为0,奇数计数器加1 JMP NEXT ;转取下一数 EVEN1:INC CX ;偶数计数器加1 JMP NEXT ;转取下一数 PP: MOV ODD,DX ;保存奇数计数 MOV EVEN0,CX;保存偶数计数 MOV AH,4CH INT 21H CODE ENDS END START 寄存器使用分配: SI: 取数指针 AX: 中间寄存器 CX: 偶数计数器 DX: 奇数计数器  开始 取一数→AX (AX)=0? (DX)+1→DX N Y 结束 ARR→SI,0→CX,0→DX (AX)为偶数否? (CX)+1→CX Y DX→ODD,CX→EVEN0 N 程序框图 第8页(共8页)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服