ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:24KB ,
资源ID:18518176      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18518176.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言程序设计习题答案Word格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言程序设计习题答案Word格式.docx

1、 MOV CL ,02H SAL AL,CL ;(AL)=01000000H ADD AL,BL ;(AL)=01010000H 本程序实现了什么功能? 【答】 将AL中的内容乘以10。4.3 试分析下列程序完成什么功能? MOV DX,3F08H MOV AH,0A2H MOV CL,4 SHL DX,CL ;(DX)=F080H MOV BL,AH SHL BL,CL ;(BL)=20H SHR BL,CL ;(BL)=02H OR DL,BL ;(DL)=82H 【答】将DX中的低4位数据8H分离出来,将AH中的低4位数据2H分离出来,合并为82H存放在DL。4.4 已知程序段如下: M

2、OV AX,1234H ROL AX,CL DEC AX MOV CX,4 MUL CX 试问:(1)每条指令执行后,AX寄存器的内容是什么?(2)每条指令执行后,CF,SF及ZF的值分别是什么?(3)程序运行结束时,AX及DX寄存器的值为多少?【答】 MOV AX,1234H ; (AX)=1234H, CF=SF=ZF=0 MOV CL,4 ROL AX,CL ; (AX)=2341H ,CF=1,SF=ZF=0 DEC AX ; (AX)=2340H, CF=1,SF=ZF=0 MOV CX,4 ; MUL CX ;(AX)= 8000H ,CF=ZF=0,SF=1,DX=04.5 试分

3、析下列程序段: ADD AX,BX JNC L2 SUB AX,BX JNC L3 JMP SHORTL5 如果AX、BX的内容给定如下: AX BX (1)14C6H 80DCH (程序转向 L2) (2)B568H 54B7H (程序转向 SHORTL5 ) 问该程序在上述情况下执行后,程序转向何处?【答】 (1) 程序转向 L2.(2) 程序转向 SHORTL5.4.6 以下为某个数据段,试问各个变量分别占多少字节,该数据段共占多少字节? DATA SEGMENT VAR1 DW 9 ;2字节 VAR2 DD 10 DUP(?),2 ;44字节 VAR3 DB 2 DUP(?,10 DU

4、P(?) ;22字节 VAR4 DB HOW ARE YOU ;11字节 DATA ENDS【答】该数据段共占79字节。4.7 下列语句在存储器中分别为变量分配多少字节空间?并画出存储空间的分配图。 VAR1 DB 10,2 ; VAR2 DW 5DUP(?),0 ;12字节 VAR3 DB HOW ARE YOU?, ;13字节 VAR4 DD 1,1,0 ;Var1Var2Var3Var410?HFFH2?OWA01HR00HEYU4。8 编写一段程序,比较两个5字节的字符串OLDS和NEWS,若相同,在RESULT置0,否则置0FFH。【答】 参考程序: OLDS DB 1,2,3,4,

5、5 NEWS DB 1,2,3,4,5 RESULT DB ? MOV SI,OFFSET OLDS MOV DI,OFFSET NEWS MOV CX,10 REP CMPSB JNZ NOEQU ;串不相等转 MOV AL,0 JMP OUTPT NOEQU: MOV AL,0FFH OUTPT: MOV RESULT,ALSTOP: JMP STOP4.9 编程求和Y=A1 + A2 + 。 + A100 .其中Ai为字节变量。DATA SEGMENTTABLE DW 12,3,45,.。YAL DW ?YAH DW ?DATA ENDS 。MIAN PROC FARPUSH DSMOV

6、 AX, 0PUSH AXMOV AX, DATAMOV DS, AXMOV DX,0XOR AX, AX ;清AXMOV BX, OFFSET TABLEMOV CX, 4CLCLP: ADD AX, BX ;求和JNC DONINC DXCLC DON: INC BXINC BX ;指向下一个数LOOP LP ;未加完,继续MOV YAL,AX ;存和MOV YAH,DXMAIN ENDPCODE ENDSEND START10 内存中以FIRST和SECOND开始的单元中分别存放着两个16位组合的十进制(BCD码)数,低位在前。编程序求这两个数的组合的十进制和,并存到以THIRD开始的单

7、元。1325+9839=?FIRST DB 05H,02H,03H,01H ;SECOND DB 09H,03H, 08H,09H;THIRD DB 20 DUP (?)DATA ENDSSTACK SEGMENTST1 DB 100 DUP (SATOP1 EQU LENGTH ST1STACK ENDSCODE SEGMENTASUMME CS:CODE,DS:DATA,SS:STACKMAIN PROC FARSTART: MOV AX, DAT ;初始化数据段MOV DS, AXMOV AX, STACK ;初始化堆栈段MOV SS, AXMOV AX, TOP1MOV SP, AXM

8、OV CX, 4 ;计算4次MOV BX, OFFSET DAT1 ;取数据地址MOV SI , OFFSET DAT2 ;MOV DI , OFFSET SUM ;取结果地址MOV AH, 00H ;将暂存标志的AH清0DON1: MOV AL, BX ;取第一个数 SAHF ;将AH中的标志送标志寄存器ADC AL, DI ;与第二个数带进位加AAA ;十进制校正LAHF ;将标志寄存器内容送AHOR AL, 30H ;计算值拼成ASCII码MOV DI, AL ;存结果的ASCII码INC BX ;指向第一个数的下一位INC SI ;指向第二个数的下一位INC DI ;指向结果单元的下一

9、位LOOP DON1 ;未计算完,继续AND AH, 01H ;将最高位的进位标志送AHOR AH, 30H ;最高位的进位位拼成ASCII码MOV DI, AH ;存结果的最高位MOV AH, 02H ;调用DOS的02H功能显示MOV CX, 05H ;显示数据的位数DON2: MOV DL,DI ;显示数据送DLINT 21H ;显示DEC DI ;显示数据所在存储单元加一LOOP DON2 ;未显示完,继续MOV AH, 4CH ;返回DOSINT 21H RET MAIN ENDP CODE ENDS END START 11 试编程序,统计由40000H开始的16K个单元中所存放的

10、字符“A“的个数,并将结果存放在DX中。【答】 参考程序DATA SEGMENT DATA1 DB DFASFAAAFDFAAFFFACOUNT EQU $DATA1DATA ENDSSTACK SEGMENTSTA DB 100 DUP (?TOP EQU LENGTH STA STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:BEGIN: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV CX,COUNTLEA SI,DATA1MOV BL,A NEXT : CMP

11、SI,BLJNZ OTHEROTHER: INC SILOOP NEXTCODE ENDSEND BEGIN12 统计数据块中正数与负数的个数,并将正数与负数分别送到两个缓冲区。【答】 参考程序: BLOCK DB -1,-3,5,6,-2,0,20,10 PLUS_D DB 8 DUP(?) ;正数缓冲区 MINUS_D DB 8 DUP(?) ;负数缓冲区 PLUS DB 0 MINUS DB 0 MOV SI,OFFSET BLOCK MOV DI,OFFSET PLUS_D MOV BX,OFFSET MINUS_D MOV CX, 8 ;数据个数送CX GOON: LODSB ;AL

12、 SI TEST AX, 80H JNZ JMIUS ;为负数,转 INC PLUS ;正数个数加一 STOSB ;DI AL,传正数 JMP AGAIN JMIUS: INC MINUS ;负数个数加一 XCHG BX, DI STOSB ;送负数到缓冲区 XCHG BX, DI AGAIN: DEC CX JNZ GOON13 编写一个子程序将AX中的十六进制数,转换成ASCII码, 存于ADR开始的四个单元中。提示:1)、AX中的数从左到右,转换成ASCII码,用循环左移ROL和AND指令,把提出的一个十六进制数置BL中; 2)、0 9 的ASCII码:30 39H,A F 的ASCII

13、码:41H 46H。( 先把每个数加30H,判断是否为数字0 9?若是A F,再加07H,得字母的ASCII码。ADR DB 4 DUP(?MAIN PROC FARCODE,DS:DATASTART: MOV AX,7EC3H ;假设ax中存放7ec3hLEA SI,ADRMOV DL,4AGAIN:MOV BX,AXAND BX,000FHADD BL,30HCMP BL,9JG ADUSTJMP STOREADUST: ADD BL ,07HSTORE: MOV SI,BLINC SIMOV CL,4ROL AX,CLDEC DLJNZ AGAINMAIN ENDP END START4

14、.14 编写一个子程序将AX中的2进制数,转换成10进制ASCII码, 存于ADR开始的五个单元中。【答】参考程序:BIN EQU 5555H;假设二进制数为5555HDATA SEGMENTADR DB 4 DUP(?STA DB 100 DUP (?DATA,SS:MOV SP,AXMOV AX,BINLEA BX,ADRMOV CX,10000DCALL BINTODECMOV CX,1000DMOV CX,100DCALL BINTODEC MOV CX,10DCALL BINTODECMOV CX,01DMOV AX,04CH ;INT 21H;十进制转二进制,完成一位运算,十进制存

15、于ax中,结果存于bx所指向的地址中BINTODEC PROC NEARDIV CXADD AL,30HMOV BX,ALMOV AX,DXINC BXRETBINTODEC ENDP15 编写一个子程序,对AL中的数据进行偶校验,并将经过校验的结果放回AL中.JIAOYAN PROC FARMOV AL,1001110BOR AL, ALJNP NEXTMOV AL,0JMP DONE NEXT: MOV AL,1DONE: MOV AH,04CHJIAOYAN ENDP16 从2000H单元开始的区域,存放100个字节的字符串,其中有几个$符号(ASCII 码为24),找出第一个$符号,送

16、AL中,地址送BX。SEARCH PROC FARMOV DI,2000HMOV CX,100MOV AL,24HCLDREPNZ SCASB JNZ STOPDEC DIMOV BX,DIMOV AL,DISTOP: RETSEARCH ENDP17 用串操作指令实现:先将100H个数从2170H单元处搬到1000H单元处,然后从中检索等于AL中字符的单元,并将此单元换成空格字符。MOV SI,2170HMOV DI,1000HMOV CX,100HDO: REP MOVSBMOV DI,1000HREPNZ SCASBMOV DI,20HINC DICMP CX,0JNZ DO HLT18

17、 从60H个元素中寻找一个最大的值,并放到AL中,假设这60个元素放在DATA1开始的单元中。DATA1 DB 0,1,2,3,4,5,6,7,8,9 ;STA DB 20 DUP (?TOP EQU LENGTH STAASSUME CS:MOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV CX,10MOV AL,0LEA BX,DATA1 CMP AL,BXJGE NEXT ;大于等于转移MOV AL,BXNEXT :LOOP AGAINMOV AH,4CHEND START19 排序程序设计: 把表中元素按值的大小升序排列。要求显示排

18、序前和排序后的数据。TAB DB 8095554N=$-TAB OK DB 0DH,0AH,OK!STACK SEGMENT STA DB 20 DUP(?TOP EQU LENGTH STASTAC ENDSSTAR: MOV AX,DATAMOV DS,AX ;MOV AX,TOPCALL ARRAY MOV AH,4CHINT 21H ;ARRAY PROC NEARPUSH BXPUSH CXPUSH DXMOV DL,N1 ;置外循环次数MOV DH,1 ;设有交换标志XOR BX, BX UPPER: OR DH,DH ;JZ DISP ;无交换,已排好序,退出 MOV DH,0

19、;无交换MOV CX,N-1 SUB CX,BX ;CX=CXI内循环次数 MOV SI,0 ;指向表首INNER: MOV AL,TABSI ;字符送ALINC SI ;指向下个字符CMP AL,TABSI ;比较表中相邻字符JBE DON ;小于 XCHG AL,TABSI ;否则交换,大字符下 MOV TABSI1,AL ;小字符上浮MOV DH,1 ;有交换,DH=1 DON: LOOP INNER ;内循环结束?CX-1INC BX ;一次内循环完成,加一DEC DL ;外循环次数减一 CMP DL,0JNZ UPPER ;外循环次数非零,继续 DISP: MOV DX,OFFSET

20、 TABMOV AH,09HINT 21H ;显示排好序的字符POP DXPOP CXPOP BXPOP AXARRAY ENDP END STAR 20 编写一段程序,接收从键盘输入的10个数,输入回车符表示结束,然后将这些数加密后存于BUFF缓冲区中。加密表为:输入数字: 0,1,2,3,4,5,6,7,8,9;密码数字:7,5,9,1,3,6,8,0,2,4.TABLE DB 7,5,9,1,3,6,8,0,2,4;密码表BUFF DB 10 DUP(?) ,存放转换数字的缓冲区STA DB 20 DUP(?MOV SS,AXMOV DI , OFFSET BUFFLEA BX , TA

21、BLEMOV CX,0DHRE1: MOV AH , 1 ;从键盘输入CMP AL,0DHJZ DONESUB AL,30HXLATADD AL,30HMOV DI , ALLOOP RE1 MOV DX , OFFSET BUFFMOV AH , 09HMOV AH,4CH21 编程序从键盘接收一个4位16进制数,转换为10进制数后,送显示.【答】算法:先将输入的十六进制数保存到BX中,BX中的数范围在+32767-32768之间,先检查BX中的符号位,以决定输出“+”还是“”;若是负数,应先求补,得到原码后即可与正数作统一处理.转换方法为将被转换的二进制数先除;以10000,商即为万位数,再将余数除以1000

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1