汇编语言课后习题答案郑晓薇后的

上传人:w****1 文档编号:43796787 上传时间:2021-12-04 格式:DOC 页数:35 大小:239.50KB
返回 下载 相关 举报
汇编语言课后习题答案郑晓薇后的_第1页
第1页 / 共35页
汇编语言课后习题答案郑晓薇后的_第2页
第2页 / 共35页
汇编语言课后习题答案郑晓薇后的_第3页
第3页 / 共35页
点击查看更多>>
资源描述
25E8AH , 0BE6H , 3DEH ,4940H300011101+0011010仁01010010=52H=825 000020A3H, FF94H ,00003456H, 007FH ,FFFFEC00H6无符号数:065535 , 0000HFFFFH ;带符号数: -32768 +32767 , 8000H(1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码(2) FFH等于十进制数-1,是带 符号数-1的补码,无符号数为2555AH 等于十进制数90 ,是 十进制数90的补码,大写字母Z的ASCII码0DH等于十进制数13,是 十进制数13的补码,回车符的ASCII 码8 46=00101110B=2EH,补码 00101110B ,压缩 BCD 码 01000110,ASCII 码3436H7FFFH(1) 56+63=01110111B,CF=O , SF=O , ZF=O , OF=0 83-45=00100110B,CF=0 , SF=0 , ZF=0 , OF=0-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 200CL,15 (3) ADD AX,BX20执行U 10021执行R CX,然后输入10022 执行 E DS:O a b习题三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, 物理地址 =50CAAHd7MOV 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(4)MOV BX+SI,AL (5)MOV AX,VALUESI (6) SUBAX,DS:2000H9(1) ADD AX,X+4MOV Y,AX MOV BX,4ADD AX,XBXMOV Y,AX 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() PI EQU(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 的偏 移地址。13MOV DX,2012HMOV AX,5D68HMOV CX,1003HMOV BX,49A6HADD AX,BX (SUB AX,BX)ADC DX,CX (SBB DX,CX)13 SUB AX,CXSBB DX,0CBW15 MOV AX,extraADD DX,AXMOV ES,AXMOV AH,016MOV AL,W(1) MOV AL,16IMUL ALADD AL,XSUB DX,AXMOV BL,5MOV Z,DXIMUL BL(4) MOV AL,XMOV 乙AXADD AL, Y(2) MOV BL,4MOV BL,XMOV AL,XSUB BL, YIDIV BLMOV AH,0SUB AL, YIMUL BLMOV 乙AXMOV 乙AX(3) MOV AL,XMOV AL,XMOV BL,8IDIV YIMUL BLCBWMOV DX,AXSUB Z,AXMOV AH,017 Z= (5+22-15)*14二MOV AL, Y168MOV BL,1618 从伪指令END START处IDIV BL获知程序从START标号开始。19(1 )减法:(2)加法:MOV AX,8576H MOVAX,8576HMOV BX,9988H MOVBX,9988HSUB AX,BX ADD AX,BX结果:AX=EBEEH 结果:AX=1EFEHCF=1 , OF=0 , ZF=0 , SF=1CF=1 , OF=1 , ZF=0 , SF=021(1) MOV AL,56HMOV BL,34HADD AL,BLDAAMOV Y 1,AL(2) MOV AX,128HMOV BX,35HSUB AX,BXDASMOV Y 2,AL(3) MOV AL,68HMOV BL,23HADD AL,BLMOV BL,45HSUB AL,BLDASMOV Y 3,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,2mov bx,axint 21hmov dl,bh ; 显示 4mov ah,4chmov ah,2int 21hint 21hend startmov dl,bl ; 显示 625int 21h.model smallmov ah,4ch.dataint 21hx db 12hend starty db 34h26.codedata segme ntstart:x db ,mov ax,datadb ,;建立字符表mov ds,axy db 5 dup();存放查到平方根mov al,xu db 3 ;要查的数add al,y ;结果为 46Hdata endsmov ah,al ;AH=46Hcode segme ntand al,Ofh ;AL=06Hassume cs:code,ds:datamov cl,4start:rol ah,cl ;AH=64Hmov ax,dataand ah,0fh ;AH=04Hmov ds,axadd ax,3030h ;AX=3436Hmov al,u ; 要查的数mov cl,5x3 db wa ng Ian $mul cl ;u*5=15(号单元开始)x4 db zhao xue $mov ah,0x5 db li jiang $mov bx,ax ;地址保存至U bxu db 3 ;要查的学号mov si,0.codeletl:start:mov al,xbx;取出平方根数mov ax,data字mov ds,axmov ysi,al ;存入ymov al,u ; 给出学号inc simov cl,10inc bxmul cl ;u*10=30(号单元开loop letl ;循环取出5次始)mov ah,4chmov ah,0int 21hmov dx,ax ; 地址保存至U dxcode endsmov ah,9 ;9号功能显示字符end start串27int 21h.model smallmov ah,4ch.dataint 21hx1 db zha ng yan $;姓名为end start10个字符宽度28编程实现公式计算x2 db li li $Z=X/4+16 Y。.model small.data.datay db , ?x db 4.codey db 6start:z db ?mov ax,data.codemov ds,axstart:mov al,3 ; 设 al=3mov ax,datamov cl,6mov ds,axmul cl ;al*6mov al,x ;mov cl,4 ; 设 cl=4mov cl,2sub al,cl ;相减sar al,cl ; X/4mov bl,3mov cl,4idiv bl ; /3mov bl,ymov y,al ;商sal bl,cl ;16Ymov y+1,ah ; 余数add al,bl ;X/4+16 Ymov ah,4chmov 乙alint 21hmov ah,4chend start习题五int 21h11进位标志CF=1end start12 先把AX的值除以8等于290246H,再把咼12位屏蔽为0,.model small剩下AL=06H 加上30H变为ASCII码显示出来。13判断X0,是,Z=X-Y ;否则Z=X的绝对值14(1)目的操作数是存储单元 时,要用PTR伪操作指出单元的 属性(2)DS段寄存器使用非 法(3 )立即数使用非法(4)目 的操作数不允许是立即数 (5) 两个操作数不允许都是存储单元 (6)移位次数超过1要用CL表 示。1516 (1) AL=30H (2) AL=B7H(3) AL=C8H (4)AL=38H27分支程序设计。完成如下公 式的计算,请写出程序。(X+3)/2 X0Y二 0 X=0XX4 X0 , Z=4X-Y/16,否则,Z=X的绝对值。编程序实现。程序如下:DATA SEGMENTX DB 3Y DB 5Z DB ?DATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,XCMP AL,0JL SS1MOV CL,4SAR BL,CLSUB AL,BLJMP OUT1SS1: NEG ALOUT1: MOV 乙ALMOV AH,4CHINT 21HCODE ENDSEND START29字数组M中有10个数据, 分类统计其中正数、负数、0的 个数,分别存入POSI、NEGA、ZERO单元。程序如下:DATA1 SEGMENTM DW21,-34,32,112,-324,0,76,0,48,50MOV CL,2POSIDW?SAL AL,CLNEGADW?MOV BL, YZERODW?DATA1 ENDSC0DE1 SEGMENTASSUME CS:CODE1,DS:DATA1START: MOV AX,DATA1MOV DS,AXMOV CX,10LEA SI,MAGAIN: CMP WORD PTRSI,0JL LOWERJE EQUALINC POSIJMP LPP1LOWER: INC NEGAJMP LPP1EQUAL: 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 BYTEPTRBX, $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, TLOOPNE BB2改为:DEC BXBB2:INC BXCMP BX, TLOOPNE BB215计算Y=1 x 2+3 x 4+5 x 6+7 x 8+9X10的程序段答案: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 asddddsig n db ?mov ax,extramov es,axmov sig n,0mov al,cmp si,0lea di,cattjge let1 ;let1cldinc ax ;为负数,ax加1mov cx,7let1: add bx,2rep nz scasbloop rept1jcxz nee18从键盘输入一个数字,在屏幕mov sig n,1上显示出以该数字开始10个数n ee: mov ah,4ch字串。int 21hCODE SEGMENT17写程序段。在长度为N的字ASSUME CS:CODE数组VALUE中统计负数的个数START: MOV AH,1并保存到AX中。INT 21Hvalue dw 2,-4,-5,3,6,6,-8MOV CX,10n equ ($-value)/2 ;兀素个数MOV BL,ALREPT1: CMP BL,9start: mov ax,dataJLE NEXTmov ds,axSUB BL,10mov cx,nNEXT: MOV DL,BLmov bx,0MOV AH,2mov ax,0INT 21Hrept1:INC BLmov si,valuebx;取出兀素LOOP REPT1MOV AH,4CHmov al,siINT 21Hcmp al,di; 两字符比较CODE ENDSjz equl ;相同转 equlEND STARTinc bl ;不同bl加119jmp out1data segme ntequl: inc bhbun ch1 db stade ntout1:i nc sibunch2 db studEntinc didata endsloop let1code segme ntmov dl,n; 显示n,代表不同assumemov ah,2hcs:code,ds:data,es:dataint 21hstart:add bl,30h ; 加上 ASCII 码mov ax,datamov dl,bl ;显示不同的个数mov ds,axint 21hmov es,axmov dl,e; 显示e,代表相同lea si,b un ch1int 21hlea di,b un ch2add bh,30hmov bx,0 ;bh=相同的个数,mov dl,bh ;显示相同的个数bl=不同的个数int 21hmov cx,7mov ah,4chlet1:int 21hcode endsend start21DATA SEGMENTSTR DB SDABF G HO DATA 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 码表示的十进制数和转换后的二 进制数。程序如下:;将内存中用ASCII码表示的100以内的十进制数转变为二进制数data segme ntscorel db36h,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 segme ntassume cs:code,ds:datastart: mov ax,datamov ds,axmov cx, nummov si,-2rept1: push cx ;保存外循环次数mov cx,nrept2: mov al,score1bx;从score1取数cmp al,30h ;判断是否 0-9jl exitcmp al,39hjg exitand ax,000fh ;去掉 ASCII 码xchg ax,xmov dx,10 ; 将ax中前一次形成的数扩大10倍mul dxxchg ax,xadd x,ax ;相加后保存到xexit: inc bx ;取下一位数loop rept2pop cx ;弹出外循环次数add si,2mov bx,0mov ax,xmov score2si,ax ; 转换后的数据保存到score2mov x,0loop reptlmov ah,4chint 21hcode endsend start习题七12功能:两个字节数相加。X 和BL相加保存到Y。13功能:键盘输入的字符保存到KEY单元中,直到按回车为 止。14 功能:将X单元中的十六进 制3AH变为十进制入栈保存,AH中为余数。先将0008H 入 栈,再将0005H入栈,结果为58。16PUSH AXPUSH BXMOV BX,0LET1:MOV AH,1INT 21HCMP AL,0DH ;输入回车退出JZ EXITMOV BUFFERBX,AL ; 保存至 UBUFFERINC BXJMP LET1EXIT:POP BXPOP AXRETKEY_IN ENDP17KEY_IN_DEC PROCPUSH AXPUSH BXMOV X,0MOV BX,0MOV SI,0LET1:MOV AH,1INT 21HCMP AL,0DH ;输入回车退出JZ EXITMOV BUFFERSI,AL ;保存至 UBUFFERINC 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 ENDP23calcu 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 letlpop sipop bxpop axretcalcu endp30DATA 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 LADDMOVSUM1 , BLMOV SI , OFFSET BCALL LADDMOV SUM2 , BLMOV AH , 4CHINT 21HLADD PROC NEARPUSH CXPUSH AXPUSH SIXOR BL , BLNEXT : MOV AL ,AND AL , ALJNS JJJADD BL , ALJJJ: INC SILOOP NEXTPOP SIPOP AXPOP CXRETLADD ENDPSICODE ENDSEND START习题八16宏的作用:DOS功能调用。功能号用哑元指出。17宏的作用:两个操作数相加, 结果保存在第3个数中。18宏的作用:DOS的2号显示 功能。19宏的作用:定义VALUE数组,数组长度和初值由哑元指出。20缺少标号定义LOCAL LETT1。宏的作用:两个哑元相减,结果为负则求补。27程序:.model small.stack 100h.codestart:in put ;键盘输入add al,20h ;大写变为小写output al ; 显示int 21hend start28程序:.model small.dataalpha db Computer .codestart:display alpha ;显示字串mov ah,4chint 21hend start29程序:.model small.stack 100h.codestart:in put ;键盘输入cmp al,-jnz startneg x ; 求补mov ah,4chmov ah,4chint 21hend start30程序:.model small.stack 100h.codestart:in put ;键盘输入mov bl,alin put ;输入第2个数add al,blmov ah,0aaa ;非压缩BCD码加法调整add ax,3030houtput ah ; 显示高位output al ; 显示低位mov ah,4chint 21hend start
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 演讲稿件


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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