欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    汇编语言课后习题答案---郑晓薇(整理后的)(12页).doc

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

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

    汇编语言课后习题答案---郑晓薇(整理后的)(12页).doc

    -汇编语言课后习题答案-郑晓薇(整理后的)-第 12 页习题一1   无符号数: 11010011=211=D3H,01110111=119=77H,10000011=131=83H,00101111=47=2FH,10101010=170=AAH带符号数:11010011= -45=D3H,01110111=+119=77H,10000011= -125=83H,00101111=+47=2FH,10101010= -86=AAH2    5E8AH,0BE6H,3DEH,4940H3   00011101+00110101=01010010=52H=8201001001+11101000=00110001=31H=4910111110+01010010=00010000=10H=1610011010+11110001=10001011=8BH= -1174 00101001+01010011=01111100+00000110=10000010=82H=820111001100100100=0100111100000110=01001001=49H=4901100110+00011000=01111110+00000110=10000100=84H=840000000100110010+01110101=0000000110100111+00000110=0000001000000111=0207H=2075   000020A3H,FF94H,00003456H,007FH,FFFFEC00H6    无符号数:065535,0000HFFFFH;带符号数:-32768+32767,8000H7FFFH7    (1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码(2) FFH等于十进制数-1,是带符号数-1的补码,无符号数为255(3) 5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码(4) 0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码8  (1) 108=01101100B=6CH,补码01101100B,压缩BCD码0000000100001000,ASCII码313038H(2) 46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H(3) 15=11110001B=F1H,补码11110001B,ASCII码2D3135H(4) 254=0000000011111110B=00FEH,补码0000000011111110B,压缩BCD码0000001001010100,ASCII码323534H9    (1) 56+63=01110111B,CF=0,SF=0,ZF=0,OF=0(2) 83-45=00100110B,CF=0,SF=0,ZF=0,OF=0(3) -74+29=11010011B,CF=0,SF=1,ZF=0,OF=0(4) -9237=01111111B,CF=1,SF=0,ZF=0,OF=110     回车、换行、响铃、ESC键、空格键、P、p习题二9   最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节)10    CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP11 字节单元保存8位数,字单元保存16位数。根据源操作数的属性确定要访问的是字节单元还是字单元。 12   对于字节单元来说,偶地址和奇地址一样;对于字单元而言,最好用偶地址保存,可减少CPU的访存次数。13   首单元的物理地址=38AE8H,末单元的物理地址=38AE8H+7FFFH=40AE7H16   (1)物理地址=27679H (2) 物理地址=20F92H (3) 物理地址=20F92H (2)和(3)的物理地址是一样的。说明逻辑地址不唯一,多个逻辑地址可对应到同一个物理单元上。17     代码段CS:IP的物理地址=55A84H 堆栈段SS:SP的物理地址=4DB65H数据段DS:BX的物理地址=17678H 附加段ES:DI的物理地址=2BA41H18  当前栈指针所指单元的物理地址是1522CH。堆栈区中还能保存254个字。19   执行E 20020   执行U 100 21    执行R CX,然后输入10022    执行E DS:0 a b c d 习题三3 MOV AX,BX 源操作数为寄存器寻址,EA 无,物理地址 无MOV AX,1290H 立即寻址,EA 无,物理地址 无MOV AX,BX 寄存器间接寻址,EA=1290H, 物理地址=2FBB0HMOV AX,DS:1290H 直接寻址,EA=1290H, 物理地址=2FBB0HMOV AX,BP 寄存器间接寻址,EA=6756H, 物理地址=26A56HMOV DIBX,AX 目的操作数为基址变址寻址,EA=3C06H, 物理地址=32526HMOV ES:SI,AX 寄存器间接寻址,EA=348AH, 物理地址=50CAAH7   MOV AX,CX 错。CX不能为间址寄存器MOV AL,1200H 错。立即数超出8位寄存器范围MOV AL,BX 错。两个操作数不匹配MOV SIDI,AX 错。两个变址寄存器不能在一起MOV ES:DX,CX 错。DX不能为间址寄存器MOV AX,VALUE 错。AX不能为间址寄存器MOV COUNT,SI 错。两个操作数不能都是存储单元8   (1) MOV AX,BX (2) MOV CL,15 (3) ADD AX,BX (4) MOV BX+SI,AL (5) MOV AX,VALUESI (6) SUB AX,DS:2000H9    (1) ADD AX,X+4MOV Y,AX (2) MOV BX,4ADD AX,XBX MOV Y,AX(3) MOV BX,4MOV SI,OFFSET XADD AX,BX+SIMOV Y,AX10  立即寻址方式中操作数(立即数)和指令一起存放在代码段中。习题四10    (1) DATA SEGMENTX DW 0Y DW 0DATA ENDS(2) STRING DB Computer(3) COUNT DB 100 DUP(?)(4) PI EQU 3.14(5) VALUE LABEL BYTE11    (1)对。(2)错。260超出了字节范围。(3)错。X3是字节型,1234H是字型,不匹配。(4)对。(5)错。缺少DUP。(6)对。12  (1)AL=3。(2)AX=2103H。(3)DX=TABLE的偏移地址。(4)CL=33H(5)BX=TABLE的段地址。(6)BX=1。(7)DX= TABLE的偏移地址。13   MOV DX,2012HMOV AX,5D68HMOV CX,1003HMOV BX,49A6HADD AX,BX (SUB AX,BX)ADC DX,CX (SBB DX,CX)14   SUB AX,CXSBB DX,015    MOV AX,extraMOV ES,AX16   (1) MOV AL,16ADD AL,XMOV BL,5IMUL BLMOV Z,AX(2) MOV BL,4MOV AL,XIDIV BLSUB AL,YMOV Z,AX(3) MOV AL,XMOV BL,8IMUL BLMOV DX,AXMOV AH,0MOV AL,YMOV BL,16IDIV BLCBWADD DX,AXMOV AH,0MOV AL,WIMUL ALSUB DX,AXMOV Z,DX(4) MOV AL,XADD AL,YMOV BL,XSUB BL,YMOV AH,0IMUL BLMOV Z,AXMOV AL,XIDIV YCBWSUB Z,AX17  Z= (5+22-15)*14= 16818   从伪指令END START处获知程序从START标号开始。19  (1)减法:                     (2) 加法:MOV AX,8576H                         MOV AX,8576HMOV BX,9988H                         MOV BX,9988HSUB AX,BX                                ADD AX,BX结果:AX=EBEEH              结果:AX=1EFEHCF=1,OF=0,ZF=0,SF=1     CF=1,OF=1,ZF=0,SF=021     (1) MOV AL,56HMOV BL,34HADD AL,BLDAAMOV Y1,AL(2) MOV AX,128HMOV BX,35HSUB AX,BXDASMOV Y2,AL(3) MOV AL,68HMOV BL,23HADD AL,BLMOV BL,45HSUB AL,BLDASMOV Y3,AL22     (1) MOV AX,0708HMOV BX,0406HADD AL,BLADD AH,BH ;不用带进位加AAA ;加法调整,含进位调整MOV BX,AXXCHG AH,AL ;高4位调整AAAMOV BH,ALMOV Z1,BX ;保存十位、各位,百位在CF中(2) MOV AX,0905HMOV BX,0207HSUB AL,BLSUB AH,BH ;不用带借位减AAS ;减法调整MOV Z2,AX(3) MOV AX,0102HMOV BX,0006HMUL BX ;乘法先不用调整MOV BX,0303HSUB AX,BXAAS ;减法调整MOV Z3,AX(4) MOV AX,0704HMOV BX,0108HADD AL,BLADD AH,BHAAA ;加法调整MOV BL,6AAD ;除法调整DIV BLMOV BH,AH ;余数保存在BHAND AX,000FHAAA ;商调整MOV Z4,AX ;保存商23   .model small.databuff db ?.codestart:mov ax,datamov ds,axmov ah,1 ;键盘输入int 21hsub al,30h ;去掉ASCII码mov buff,almov ah,4chint 21hend start24   .model small.codestart:mov ah,1 ;键盘输入int 21hsub al,20h ;变为大写mov dl,almov ah,2int 21hmov ah,4chint 21hend start25     .model small.datax db 12hy db 34h.codestart:mov ax,datamov ds,axmov al,xadd al,y ;结果为46Hmov ah,al ;AH=46Hand al,0fh ;AL=06Hmov cl,4rol ah,cl ;AH=64Hand ah,0fh ;AH=04Hadd ax,3030h ;AX=3436Hmov bx,axmov dl,bh ;显示4mov ah,2 int 21hmov dl,bl ;显示6int 21hmov ah,4chint 21hend start26     data segment x db '0.000','1.000','1.414','1.732','2.000'db '2.236','2.449','2.646','2.828','3.000' ;建立字符表y db 5 dup(?) ;存放查到平方根u db 3 ;要查的数data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov al,u ;要查的数mov cl,5mul cl ;u*5=15(号单元开始)mov ah,0mov bx,ax ;地址保存到bxmov si,0let1:mov al,xbx ;取出平方根数字mov ysi,al ;存入yinc siinc bxloop let1 ;循环取出5次mov ah,4chint 21hcode endsend start27     .model small.datax1 db 'zhang yan $' ;姓名为10个字符宽度x2 db 'li li $'x3 db 'wang lan $'x4 db 'zhao xue $'x5 db 'li jiang $'u db 3 ;要查的学号.code start:mov ax,datamov ds,axmov al,u ;给出学号mov cl,10mul cl ;u*10=30(号单元开始)mov ah,0mov dx,ax ;地址保存到dxmov ah,9 ;9号功能显示字符串int 21hmov ah,4chint 21hend start28    编程实现公式计算Z=X/4+16Y。.model small.datax db 4 y db 6z db ?.code start:mov ax,datamov ds,axmov al,x ;mov cl,2sar al,cl ; X/4mov cl,4mov bl,ysal bl,cl ;16Yadd al,bl ;X/4+16Ymov z,almov ah,4chint 21hend start29   .model small.datay db ?,?.code start:mov ax,datamov ds,axmov al,3 ;设al=3mov cl,6mul cl ;al*6mov cl,4 ;设cl=4sub al,cl ;相减mov bl,3 idiv bl ; /3mov y,al ;商mov y+1,ah ;余数mov ah,4chint 21hend start习题五11    进位标志CF=1 12   先把AX的值除以8等于0246H,再把高12位屏蔽为0,剩下AL=06H加上30H变为ASCII码显示出来。13   判断X>0,是,Z=X-Y;否则Z=X的绝对值 14    (1) 目的操作数是存储单元时,要用PTR伪操作指出单元的属性 (2)DS段寄存器使用非法 (3)立即数使用非法 (4) 目的操作数不允许是立即数 (5) 两个操作数不允许都是存储单元 (6)移位次数超过1要用CL表示。15     AND AL,11011111B16     (1) AL=30H (2) AL=B7H (3) AL=C8H (4)AL=38H27    分支程序设计。完成如下公式的计算,请写出程序。   (X+3)/2    X>0Y= 0                 X=0       X×4          X<0程序如下:DATA SEGMENTX DB 23Y DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,XCMP AL,0JE SUB2JG SUB1MOV CL,2SAL AL,CLJMP SHORT SUB2SUB1:ADD AL,3SAR AL,1SUB2: MOV Y,ALMOV AH,4CHINT 21HCODE ENDSEND START28   设X、Y、Z为字节单元。如果X0,Z=4X-Y/16,否则,Z=X的绝对值。编程序实现。程序如下:DATA SEGMENTX DB 3Y DB 5Z DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,XCMP AL,0JL SS1MOV CL,2SAL AL,CLMOV BL,YMOV CL,4SAR BL,CLSUB AL,BLJMP OUT1SS1: NEG ALOUT1: MOV Z,ALMOV AH,4CHINT 21HCODE ENDSEND START29    字数组M中有10个数据,分类统计其中正数、负数、0的个数,分别存入POSI、NEGA、ZERO 单元。程序如下:DATA1 SEGMENTM DW 21,-34,32,112,-324,0,76,0,48,50POSI DW ?NEGA DW ?ZERO DW ?DATA1 ENDSCODE1 SEGMENTASSUME CS: CODE1,DS:DATA1START: MOV AX,DATA1MOV DS,AXMOV CX,10LEA SI,MAGAIN: CMP WORD PTR SI,0JL LOWERJE EQUALINC POSIJMP LPP1LOWER: INC NEGAJMP LPP1 EQUAL: INC ZEROLPP1: ADD SI,2DEC CXJNZ AGAINMOV AH,4CHINT 21HCODE1 ENDSEND START30   试编写程序,从键盘接收一英文单词,以空格结束,将其存入BUF开始的存储单元中,并在最后加上字符串结束符$。主要程序部分:LEA BX,BUFLOP: MOV AH,1INT 21HCMP AL,20HJE NEXTMOV BX,ALINC BXJMP LOPNEXT: MOV BYTE PTRBX,$31  编程。将AX寄存器中的16位数分成4组,每组4位,从低到高分别放在AL,BL,CL,DL中。程序段:START:MOV AX,1234HMOV BX,AXAND AL,0FH ;4AND BL,0F0H ;3AND AH,0FHMOV CL,AH ;2AND BH,0F0HMOV DL,BH ;1习题六11 累加和TOTAL=8312    循环统计X中0的个数13    (1) 将BB1:RCL AL,1改为BB1:ROL AL,1(2) 将BB2:CMP BX,T         LOOPNE BB2改为:DEC BXBB2:INC BXCMP BX,TLOOPNE BB215    计算Y=1×2+3×4+5×6+7×8+9×10的程序段答案:MOV AL,1MOV BL,2MOV DX,0MOV CX,5AA1:MUL BLADD DX,AXINC BLMOV AL,BLINC BLLOOP AA116   写程序段。查找CATT表中的字符”,找到后将SIGN单元置1,否则SIGN单元置0。catt db 'asdddd'sign db ?mov ax,extramov es,axmov sign,0mov al,''lea di,cattcldmov cx,7repnz scasbjcxz neemov sign,1nee: mov ah,4chint 21h17    写程序段。在长度为N的字数组VALUE中统计负数的个数并保存到AX中。value dw 2,-4,-5,3,6,6,-8n equ ($-value)/2 ;元素个数start: mov ax,datamov ds,axmov cx,nmov bx,0mov ax,0rept1:mov si,valuebx ;取出元素cmp si,0 jge let1 ;0 转let1inc ax ;为负数,ax加1let1: add bx,2loop rept118  从键盘输入一个数字,在屏幕上显示出以该数字开始10个数字串。CODE SEGMENTASSUME CS:CODESTART: MOV AH,1INT 21HMOV CX,10MOV BL,ALREPT1: CMP BL,'9'JLE NEXTSUB BL,10NEXT: MOV DL,BLMOV AH,2INT 21HINC BLLOOP REPT1MOV AH,4CHINT 21HCODE ENDSEND START19   data segmentbunch1 db 'stadent'bunch2 db 'studEnt'data endscode segmentassume cs:code,ds:data,es:datastart:mov ax,datamov ds,axmov es,axlea si,bunch1lea di,bunch2mov bx,0 ;bh=相同的个数,bl=不同的个数mov cx,7let1:mov al,sicmp al,di ;两字符比较jz equl ;相同转equlinc bl ;不同bl加1jmp out1equl: inc bhout1:inc siinc diloop let1mov dl,'n' ;显示'n',代表不同mov ah,2hint 21hadd bl,30h ;加上ASCII码mov dl,bl ;显示不同的个数int 21hmov dl,'e' ;显示'e',代表相同int 21hadd bh,30hmov dl,bh ;显示相同的个数int 21h mov ah,4chint 21hcode endsend start21  DATA SEGMENTSTR DB SDABF G H0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DI,STRSPACE:MOV CX,10MOV AL,DICMP AL,0JE OUTCMP AL,20HJE DELETEJMP EXITSUB CX,DIMOV SI,DIDELETE:MOV BL,SI+1MOV SI,BLINC SILOOP DELETEEXIT:JMP SPACEOUT:MOV AH,4CHINT 21HCODE ENDSEND START23   设计思路:(1) 用EQU伪指令获得需转换的十进制数的个数;(2) 用双重循环。外循环控制个数,用x作为中间变量;(3) 内循环将一个3位十进制数去掉ASCII码后按位数扩大10倍再相加,保存后即存储为二进制数;(4) 分两个数组保存ASCII码表示的十进制数和转换后的二进制数。程序如下: ; 6-23.asm 将内存中用ASCII码表示的100以内的十进制数转变为二进制数data segmentscore1 db 36h,37h,20h,31h,30h,30h,38h,35h,20h,31h,30h,30h ;即67,100,85,100x dw ?n equ 3 ;三位数num equ (x-score1)/n ;十进制数个数score2 dw num dup(0) ;保存转换后的二进制数data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov cx,num mov si,-2mov bx,0rept1: push cx ;保存外循环次数mov cx,nrept2: mov al,score1bx ;从score1取数cmp al,30h ;判断是否0-9jl exitcmp al,39hjg exitand ax,000fh ;去掉ASCII码xchg ax,x mov dx,10 ;将ax中前一次形成的数扩大10倍mul dx xchg ax,xadd x,ax ;相加后保存到xexit: inc bx ;取下一位数loop rept2pop cx ;弹出外循环次数add si,2mov ax,xmov score2si,ax ;转换后的数据保存到score2mov x,0 loop rept1mov ah,4chint 21hcode endsend start习题七12  功能:两个字节数相加。X和BL相加保存到Y。13    功能:键盘输入的字符保存到KEY单元中,直到按回车为止。14   功能:将X单元中的十六进制3AH变为十进制入栈保存,AH中为余数。先将0008H入栈,再将0005H入栈,结果为58。16   PUSH AXPUSH BXMOV BX,0LET1:MOV AH,1INT 21HCMP AL,0DH ;输入回车退出JZ EXITMOV BUFFERBX,AL ;保存到BUFFERINC BXJMP LET1EXIT:POP BXPOP AXRETKEY_IN ENDP17     KEY_IN_DEC PROC PUSH AXPUSH BXMOV X,0MOV BX,0MOV SI,0LET1:MOV AH,1INT 21HCMP AL,0DH ;输入回车退出JZ EXITMOV BUFFERSI,AL ;保存到BUFFERINC SIJMP LET1EXIT:MOV CX,SI ;位数放在CXMOV SI,0LET2:MOV AL, BUFFERSISUB AL,30HMOV AH, 0XCHG AX,X ;形成十进制数MOV BX,10MUL BXXCHG AX,XADD X,AX ;保存INC SILOOP LET2POP BXPOP AXRETKEY_IN _DEC ENDP23     calcu procpush axpush bxpush simov ax,0mov al,xand al,aljns zzneg almov fuhao,'-'zz:mov si,0mov bx,10 ;将ax变为十进制数真值let1:mov dx,0inc si ;统计余数个数idiv bxmov ysi, dx ;在y单元保存余数cmp ax,0jnz let1pop sipop bxpop axretcalcu endp30    DATA SEGMENTA DB 9,-8,-7,6,5B DB -8,7,6,-5,4SUM1 DB ?SUM2 DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,5MOV SI,OFFSET ACALL LADDMOV SUM1,BLMOV SI,OFFSET BCALL LADDMOV SUM2,BLMOV AH,4CHINT 21HLADD PROC NEARPUSH CXPUSH AXPUSH SIXOR BL,BLNEXT: MOV AL, SIAND AL,ALJNS JJJADD BL,ALJJJ: INC SILOOP NEXTPOP SIPOP AXPOP CXRETLADD ENDPCODE ENDSEND START习题八16   宏的作用:DOS功能调用。功能号用哑元指出。17    宏的作用:两个操作数相加,结果保存在第3个数中。18    宏的作用:DOS的2号显示功能。19    宏的作用:定义VALUE数组,数组长度和初值由哑元指出。20   缺少标号定义LOCAL LETT1。宏的作用:两个哑元相减,结果为负则求补。27   程序:.model small.stack 100h.codestart:input ;键盘输入add al,20h ; 大写变为小写output al ; 显示mov ah,4chint 21hend start28    程序:.model small.data alpha db Computer.codestart:display alpha ;显示字串mov ah,4chint 21hend start29     程序:.model small.stack 100h.codestart:input ;键盘输入cmp al,-jnz startneg x ;求补mov ah,4chint 21hend start30    程序:.model small.stack 100h.codestart:input ;键盘输入mov bl,alinput ;输入第2个数add al,blmov ah,0aaa ;非压缩BCD码加法调整add ax,3030h output ah ;显示高位output al ;显示低位mov ah,4chint 21hend start

    注意事项

    本文(汇编语言课后习题答案---郑晓薇(整理后的)(12页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开