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

上传人:豆**** 文档编号:17640457 上传时间:2022-05-25 格式:DOC 页数:8 大小:246KB
返回 下载 相关 举报
汇编语言程序设计模拟题.doc_第1页
第1页 / 共8页
汇编语言程序设计模拟题.doc_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《汇编语言程序设计模拟题.doc》由会员分享,可在线阅读,更多相关《汇编语言程序设计模拟题.doc(8页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流汇编语言程序设计模拟题.精品文档.汇编语言程序设计模拟题 一单项选择题1段寄存器( B )给定了当前可使用附加数据段的段首址。 ADS BES CSS DCS2在语句MOV AX,5BX+SI中, 源操作采用的是( D )寻址方式。 A. 直接 B. 寄存器间接 C. 变址 D. 基址加变址3SBB指令的功能为( B )。A. (OPD)-(OPS)OPD B. (OPD)-(OPS)-CFOPDC. (OPS)-CFOPD D. (OPD)-CFOPD4若有符号数运算结果溢出,则( A )位置。AOF BCF CZF DSF5使用串操作指令

2、时,目的串一定要放在当前( C )中。A代码段 B数据段 C附加数据段 D堆栈段二填空题 1、 LOOP指令的转移范围是 0255个字节 。2、 如果END伪指令后面带有符号地址,这个符号地址即为该程序运行时的 启动地址 。3、 如果在当前堆栈段中用SI作指针,则应该用 SS: 进行说明4、 在使用OUT指令时,如外设端口地址大于255,则应先把该地址送入 DX 寄存器中。5、已知(AX)、(BX)均为无符号数,在“CMP AX,BX”之后使用转移指令JBE L _可使(AX)(BX)时转L处执行三改错题 1SAL AX,2 SAL AX,12. LEA POINT,BUF LEA SI,BU

3、F3IDIV AX,10 MOV BX,10 IDIV BX4.POP BL POP BX5ADD BX,SI ADD BX,SI 6. CWD AX,DX CWD7MOV DX,5SI+DI MOV DX,5BX+DI 8. OUT DX,A MOV AL,A OUT DX,AL9STACK SEGMENT PARA PUBLIC STACK ;定义堆栈段 STACK SEGMENT PARA STACK STACK10TEST AX,01H ;测试AX最高位 TEST AX,8000H11DEC DI DEC DIDEC WORD PTR DI12CWD AX, DX CWD AX, DX

4、 CWD13OUT DL, $ OUT DL, $ MOV AL, $ OUT DX,AL14. MOV SI,AL MOV SI,AL MOV SI,AX15. MOV CX, BX+BP MOV CX, BX+BP MOV CX, BX+SI 16. MOV DS, DATA MOV DS, DATA MOV AX, DATA17. SHL AX,3 SHL AX,3 SHL AX,CL 18. AND AX,CX AND AX,CX AND AX,BX19. 执行DOS10号功能调用往BUF缓冲区输入字符串后,输入串首址应在BUF+1中。BUF+220. 若无符号数相加结果溢出,则OF位

5、置1。CF四简答题 1.简述宏指令与子程序的区别。答: 定义的方式不一样; 执行的时间不一样,子程序是在运行.EXE文件时被执行的,而宏指令是在汇编期间被执行的; 参数传递的方式不同。2.已知(AX)=0FBADH,执行以下语句序列后,(AX)=? XCHG AH,AL OR AX,0FF00H答:(AX)=0FFFBH3如何计算待取出指令的物理地址?答:(IP)左移四位+(CS)4已知AX和BX中均为无符号数且需(AX)(BX)时转NEXT处执行:CMP AX,BX() NEXT可在括号内填入哪几种转移指令?答: JA或JEA5已知两数补码分别为:X1补=00010101B, X2补=101

6、00110B, 计算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 ENDMSTR DB 80,0,80 DUP(0)_答:TT STR, 10五编写程序段 1. 已知数据段如下:DATA SEGMENTDATA1 DW -7935,12BCH,0

7、DATA2 DB -12,25HSTR0 DB DWCMLWOM $CM COUNT EQU $-STR0DATA ENDS请根据题目要求编写程序段。1) DATA2中的全部数据压入堆栈中。2) 算(DATA1)(DATA1+2)DATA1DATA12、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,D

8、ATA1 CWD ADD AX,BX ADC DX,CX MOV DATA1+4,DX MOV DATA1+2,AX3)LEA DI,STR0MOV CX,COUNTMOV AL,WMOV DL,0P0: REPNE SCASBCMP CX,0JE END0 INC DLJMP P0END0:1)MOV AL,DATA2CBWPUSH AXMOV AL,DATA2+1MOV AH,0PUSH AX5)MOV AX,DATA1AND AX,8080HJE ZEROMOV AH,4CHINT 21HZERO: 4)LEA DI,STR0 MOV CX,COUNTA: MOV DL,DI INC D

9、I MOV AH,2INT 21HLOOP A 2. 已知D盘MASM子目录下有一存在的文件WAN. ASM,编写打开该文件的程序段,打开成功0AX,否则,-1AX,最后返回操作系统。答: F DB D:MASMWAN.ASM,0 LEA DX,F MOV AH,3DH MOV AL,2 INT 21H JC ERR MOV AX,0 JMP ROSERR: MOV AX,-1ROS: MOV AH,4CH INT 21H3. 已知数据段中有语句“A DW -160,0”,请分别用乘法指令和移位指令实现(A)*16 A和A+2中(注:不考虑溢出)。答: MOV AX,AMOV CX,16IMU

10、L CXMOV A,AXMOV A+2,DX MOV CL,4SAL A,CL4请写出分别将AX、BH中的有符号数和CL中的无符号数顺序压入系统堆栈的程序段。答:PUSH AX MOV AL,BH CBW PUSH AX MOV CH,0 PUSH CX 七阅读程序并回答问题 1该程序的功能是什么? 2请写出子程序SUBP的入口参数和出口参数。 3若在子程序SUBP中漏写了“POP BX”,该子程序能正确返回吗?为什么? DATA SEGMENTOUTF DB 0AH,0DH,0,0,H,0AH,0DH,$DATA ENDS REP: MOV AH,1INT 21HCMP AL,0JB EXI

11、TCMP AL,9JA EXITLEA SI,OUTF+2CALL SUBPLEA DX,OUTFMOV AH,9INT 21HJMP REPEXIT: MOV AH,4CH INT 21HSUBP PROC PUSH BX MOV AH,0MOV BL,16DIV BL ADD AL,30HMOV SI,ALINC SI ADD AH,30HMOV SI,AHPOP BXRET SUBP ENDP答:1. 功能:等待从键盘输入一个字符,如为数字字符,则在下一行输出其十六进制的ASCII码,再等待输入下一字符;如为其它字符,则转结束。2. 入口参数: AL:存放从键盘输入的一个字符 AH:被除

12、数高位 BL:要转换的进制(除数)SI:存放转换后的两位ASCII码指针出口参数: 无3. 不能返回,因为此时栈顶的内容是(BX),而不是返回主程序的偏移地址八编程题 1. 往BUF1和BUF2两缓冲区中分别输入字符串,请使用串操作指令比较这两个串是否相等,如相等则在下一行显示“The two stringe are equal!”;如不相等则在下一行显示“The two stringe are not equal!” 说明: 画出主程序的流程图。 写出寄存器的使用分配情况。 写出关键语句的注释。寄存器使用分配:SI:取原串字符指针DI:取目的串字符指针BL:存放BUF2串长度CX:存放BUF

13、1串长度DX:DOS中断调用答:IO MACRO A,B LEA DX,A MOV AH,B INT 21H ENDMDATA 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 ENDSSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDSCODE SEGMENT ASSUME CODE:CS,DS:DATA,ES:DATA,SS:STACKSTA

14、RT: MOV AX,DATAMOV DS,AX 送数据段首址MOV ES,AXIO BUF1,10 输入两个字符串IO BUF2,10MOV CL,BUF1+1MOV BL,BUF2+1 比较两串长度是否相等CMP CL,BL JNE NO_EQU ; 不等转NO_EQULEA SI,BUF1LEA DI,BUF2MOV CH,0 长度相等,则比较两串字符是否相等REPZ CMPSBJNE NO_EQU ; 不等转NO_EQUIO T1,9 ; 显示两串相等JMP EXITNO_EQU: IO T2,9 ; 显示两串不相等EXIT: MOV AH,41H ; 返回DOSINT 21HCODE

15、 ENDS END START2. 在以ARR为首址的数组中存放着若干个十六位无符号非0数,最后以0作结束标志。统计该组数中奇数的个数送ODD单元、偶数的个数送EVEN0单元中。试编其程序。 要求:1. 画程序框图 2. 编写源程序 3. 写出寄存器的使用分配情况 4. 写出关键语句的注释。 答:DATA SEGMENTARR DW 1,2,3,4,5,6,7,8,9,0;已知数组ODD DW 0 ;奇数个数单元EVEN0 DW 0 ;偶数个数单元DATA ENDSSTACK SEGMENT STACK DB 200 DUP(0)STACK ENDSCODE SEGMENT ASSUME CS

16、:CODE,DS:DATA,SS:STACKSTART: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 21HCODE ENDS END START寄存器使用分配:SI: 取数指针AX: 中间寄存器CX: 偶数计数器DX: 奇数计数器开始取一数AX(AX)=0?(DX)+1DX结束ARRSI,0CX,0DX(AX)为偶数否?(CX)+1CXDXODD,CXEVEN0程序框图

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com