欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:8073797       资源大小:23.14KB        全文页数:21页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言程序设计习题答案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 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 试分析下列程序段: A

    3、DD 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 DUP(?) ;22字

    4、节 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?HFFH2OWA01HR00HEYU?$4.8 编写一段程序,比较两个5字节的字符串OLDS和NEWS,若相同,在RESULT置0,否则置0FFH。【答】 参考程序: OLDS DB 1,2,3,4,5 NEWS

    5、 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 AX, 0P

    6、USH 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 START4.10 内存中以FIRST和SECOND开始的单元中分别存放着两个16位组合的十进制(BCD码)数,低位在前。编程序求这两个数的组合的十进制和,并存到以THIRD开始的单元。132

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

    8、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 SI ;指向第二个数的下一位INC DI ;指向结果单元的下一位LOOP DON1 ;未计算完,继续AND

    9、 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 4.11 试编程序,统计由40000H开始的16K个单元中所存放的字符“A“的个数,并将结果存放在DX中。

    10、【答】 参考程序DATA SEGMENT DATA1 DB DFASFAAAFDFAAFFFACOUNT EQU $-DATA1DATA ENDSSTACK SEGMENTSTA DB 100 DUP (?TOP EQU LENGTH STA STACK ENDSCODE SEGMENTASSUME CS:BEGIN: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV CX,COUNTLEA SI,DATA1MOV BL,ANEXT : CMP SI,BLJNZ OTHEROTHER: INC SILOOP NEXT

    11、CODE ENDSEND BEGIN4.12 统计数据块中正数与负数的个数,并将正数与负数分别送到两个缓冲区。 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 SI TEST AX, 80H JNZ JMIUS ;为负数,转 INC PLUS ;正数

    12、个数加一 STOSB ;DI AL,传正数 JMP AGAIN JMIUS: INC MINUS ;负数个数加一 XCHG BX, DI STOSB ;送负数到缓冲区 XCHG BX, DI DEC CX JNZ GOON4.13 编写一个子程序将AX中的十六进制数,转换成ASCII码, 存于ADR开始的四个单元中。提示:1)、AX中的数从左到右,转换成ASCII码,用循环左移ROL和AND指令,把提出的一个十六进制数置BL中; 2)、0 9 的ASCII码:30 39H,A F 的ASCII码:41H 46H。( 先把每个数加30H,判断是否为数字0 9?若是A F,再加07H,得字母的AS

    13、CII码。ADR DB 4 DUP(?MAIN PROC FARDATA 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 编写一个子程序将AX中的2进制数,转换成10进制ASCII码, 存于ADR开始的五个单元中。【答】参考程序:BIN EQU

    14、 5555H;假设二进制数为5555HDATA SEGMENTADR DB 4 DUP(?DATA,SS:MOV AX,BINLEA BX,ADRMOV CX,10000DCALL BINTODECMOV CX,1000DMOV CX,100DCALL BINTODEC MOV CX,10DCALL BINTODECMOV CX,01DMOV AX,04CH ;INT 21H;十进制转二进制,完成一位运算,十进制存于ax中,结果存于bx所指向的地址中BINTODEC PROC NEARDIV CXADD AL,30HMOV BX,ALMOV AX,DXINC BXRETBINTODEC END

    15、P4.15 编写一个子程序,对AL中的数据进行偶校验,并将经过校验的结果放回AL中。JIAOYAN PROC FARMOV AL,1001110BOR AL, ALJNP NEXTMOV AL,0JMP DONE NEXT: MOV AL,1DONE: MOV AH,04CHJIAOYAN ENDP4.16 从2000H单元开始的区域,存放100个字节的字符串,其中有几个$符号(ASCII 码为24),找出第一个$符号,送AL中,地址送BX。SEARCH PROC FARMOV DI,2000HMOV CX,100MOV AL,24HCLDREPNZ SCASB JNZ STOPDEC DIM

    16、OV BX,DIMOV AL,DI RETSEARCH ENDP4.17 用串操作指令实现:先将100H个数从2170H单元处搬到1000H单元处,然后从中检索等于AL中字符的单元,并将此单元换成空格字符。MOV SI,2170HMOV DI,1000HMOV CX,100HDO: REP MOVSBMOV DI,1000HREPNZ SCASBMOV DI,20HINC DICMP CX,0JNZ DO HLT4.18 从60H个元素中寻找一个最大的值,并放到AL中,假设这60个元素放在DATA1开始的单元中。DATA1 DB 0,1,2,3,4,5,6,7,8,9 ;STA DB 20 D

    17、UP (?TOP EQU LENGTH STAMOV DS,AXMOV AX,TOPMOV SP,AXMOV CX,10LEA BX,DATA1 CMP AL,BXJGE NEXT ;大于等于转移MOV AL,BXLOOP AGAINMOV AH,4CHEND START4.19 排序程序设计: 把表中元素按值的大小升序排列。要求显示排序前和排序后的数据。TAB DB 8095554N=$-TAB OK DB 0DH,0AH,OK!$STACK SEGMENT STA DB 20 DUP(?TOP EQU LENGTH STASTAC ENDSSTAR: MOV AX,DATAMOV DS,A

    18、X ;CALL ARRAY MOV AH,4CHINT 21H ;ARRAY PROC NEARPUSH BXPUSH CXPUSH DXMOV DL,N-1 ;置外循环次数MOV DH,1 ;设有交换标志XOR BX, BX UPPER: OR DH,DH ;JZ DISP ;无交换,已排好序,退出 MOV DH,0 ;无交换MOV CX,N-1 SUB CX,BX ;CX=CX-I内循环次数 MOV SI,0 ;指向表首INNER: MOV AL,TABSI ;字符送ALINC SI ;指向下个字符CMP AL,TABSI ;比较表中相邻字符JBE DON ;小于 XCHG AL,TABS

    19、I ;否则交换,大字符下 MOV TABSI-1,AL ;小字符上浮有交换,DH=1 LOOP INNER ;内循环结束?CX-1INC BX ;一次内循环完成,加一DEC DL ;外循环次数减一 CMP DL,0JNZ UPPER ;外循环次数非零,继续 DISP: MOV DX,OFFSET TABMOV AH,09HINT 21H ;显示排好序的字符POP DXPOP CXPOP BXPOP AXARRAY ENDP END STAR 4.20 编写一段程序,接收从键盘输入的10个数,输入回车符表示结束,然后将这些数加密后存于BUFF缓冲区中。加密表为:输入数字: 0,1,2,3,4,5

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


    注意事项

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

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开