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

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

举报
开通vip

汇编语言课后习题答案郑晓薇后的PleasureGroupOffice【T985AB-B866SYT-B182C-BS682T-STT18】汇编语言课后习题答案郑晓薇后的习题一125E8AH,0BE6H,3DEH,4940H300011101+00110101=01010010=52H=8245000020A3H,FF94H,00003456H,007FH,FFFFEC00H6无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH7(1)38H等于十进制数56,是十进制数56的补码,数字8的...

汇编语言课后习题答案郑晓薇后的
PleasureGroupOffice【T985AB-B866SYT-B182C-BS682T-STT18】汇编语言课后习题答案郑晓薇后的习题一125E8AH,0BE6H,3DEH,4940H300011101+00110101=01010010=52H=8245000020A3H,FF94H,00003456H,007FH,FFFFEC00H6无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH7(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(2)46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H9(1)56+63=01110111B,CF=0,SF=0,ZF=0,OF=0(2)83-45=00100110B,CF=0,SF=0,ZF=0,OF=0(4)-92-37=01111111B,CF=1,SF=0,ZF=0,OF=110回车、换行、响铃、ESC键、空格键、@、P、p习题二9最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节)10CS: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执行E20020执行U10021执行RCX,然后输入10022执行EDS:0‘a’‘b’‘c’‘d’习题三3MOVAX,BX源操作数为寄存器寻址,EA无,物理地址无MOVAX,1290H立即寻址,EA无,物理地址无MOVAX,[BX]寄存器间接寻址,EA=1290H,物理地址=2FBB0HMOVAX,DS:[1290H]直接寻址,EA=1290H,物理地址=2FBB0HMOVAX,[BP]寄存器间接寻址,EA=6756H,物理地址=26A56HMOV[DI][BX],AX目的操作数为基址变址寻址,EA=3C06H,物理地址=32526HMOVES:[SI],AX寄存器间接寻址,EA=348AH,物理地址=50CAAH7MOVAX,[CX]错。CX不能为间址寄存器MOVAL,1200H错。立即数超出8位寄存器范围MOVAL,BX错。两个操作数不匹配MOV[SI][DI],AX错。两个变址寄存器不能在一起MOVES:[DX],CX错。DX不能为间址寄存器MOV[AX],VALUE错。AX不能为间址寄存器MOVCOUNT,[SI]错。两个操作数不能都是存储单元8(1)MOVAX,BX(2)MOVCL,15(3)ADDAX,[BX](4)MOV[BX+SI],AL(5)MOVAX,VALUE[SI](6)SUBAX,DS:[2000H]9(1)ADDAX,[X+4]MOVY,AX(2)MOVBX,4ADDAX,X[BX]MOVY,AX(3)MOVBX,4MOVSI,OFFSETXADDAX,[BX+SI]MOVY,AX10立即寻址方式中操作数(立即数)和指令一起存放在代码段中。习题四10(1)DATASEGMENTXDW0YDW0DATAENDS(2)STRINGDB’Computer’(3)COUNTDB100DUP()(4)PIEQU(5)VALUELABELBYTE 11(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的偏移地址。13MOVDX,2012HMOVAX,5D68HMOVCX,1003HMOVBX,49A6HADDAX,BX(SUBAX,BX)ADCDX,CX(SBBDX,CX)14SUBAX,CXSBBDX,015MOVAX,extraMOVES,AX16(1)MOVAL,16ADDAL,XMOVBL,5IMULBLMOVZ,AX(2)MOVBL,4MOVAL,XIDIVBLSUBAL,YMOVZ,AX(3)MOVAL,XMOVBL,8IMULBLMOVDX,AXMOVAH,0MOVAL,YMOVBL,16IDIVBLCBWADDDX,AXMOVAH,0MOVAL,WIMULALSUBDX,AXMOVZ,DX(4)MOVAL,XADDAL,YMOVBL,XSUBBL,YMOVAH,0IMULBLMOVZ,AXMOVAL,XIDIVYCBWSUBZ,AX17Z=(5+22-15)*14=16818从伪指令ENDSTART处获知程序从START标号开始。19(1)减法:(2)加法:MOVAX,8576HMOVAX,8576HMOVBX,9988HMOVBX,9988HSUBAX,BXADDAX,BX结果:AX=EBEEH结果:AX=1EFEHCF=1,OF=0,ZF=0,SF=1CF=1,OF=1,ZF=0,SF=021(1)MOVAL,56HMOVBL,34HADDAL,BLDAAMOVY1,AL(2)MOVAX,128HMOVBX,35HSUBAX,BXDASMOVY2,AL(3)MOVAL,68HMOVBL,23HADDAL,BLMOVBL,45HSUBAL,BLDASMOVY3,AL22(1)MOVAX,0708HMOVBX,0406HADDAL,BLADDAH,BH;不用带进位加AAA;加法调整,含进位调整MOVBX,AXXCHGAH,AL;高4位调整AAAMOVBH,ALMOVZ1,BX;保存十位、各位,百位在CF中(2)MOVAX,0905HMOVBX,0207HSUBAL,BLSUBAH,BH;不用带借位减AAS;减法调整MOVZ2,AX(3)MOVAX,0102HMOVBX,0006HMULBX;乘法先不用调整MOVBX,0303HSUBAX,BXAAS;减法调整MOVZ3,AX(4)MOVAX,0704HMOVBX,0108HADDAL,BLADDAH,BHAAA;加法调整MOVBL,6AAD;除法调整DIVBLMOVBH,AH;余数保存在BHANDAX,000FHAAA;商调整MOVZ4,AX;保存商23.modelsmall.databuffdb.codestart:movax,@datamovds,axmovah,1;键盘输入int21hsubal,30h;去掉ASCII码movbuff,almovah,4chint21hendstart24.modelsmall.codestart:movah,1;键盘输入int21hsubal,20h;变为大写movdl,almovah,2int21hmovah,4chint21hendstart25.modelsmall.dataxdb12hydb34h.codestart:movax,@datamovds,axmoval,xaddal,y;结果为46Hmovah,al;AH=46Handal,0fh;AL=06Hmovcl,4rolah,cl;AH=64Handah,0fh;AH=04Haddax,3030h;AX=3436Hmovbx,axmovdl,bh;显示4movah,2int21hmovdl,bl;显示6int21hmovah,4chint21hendstart26datasegmentxdb'','','','',''db'','','','','';建立字符表ydb5dup();存放查到平方根udb3;要查的数dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmoval,u;要查的数movcl,5mulcl;u*5=15(号单元开始)movah,0movbx,ax;地址保存到bxmovsi,0let1:moval,x[bx];取出平方根数字movy[si],al;存入yincsiincbxlooplet1;循环取出5次movah,4chint21hcodeendsendstart27.modelsmall.datax1db'zhangyan$';姓名为10个字符宽度x2db'lili$'x3db'wanglan$'x4db'zhaoxue$'x5db'lijiang$'udb3;要查的学号.codestart:movax,@datamovds,axmoval,u;给出学号movcl,10mulcl;u*10=30(号单元开始)movah,0movdx,ax;地址保存到dxmovah,9;9号功能显示字符串int21hmovah,4chint21hendstart28编程实现公式计算Z=X/4+16Y。.modelsmall.dataxdb4ydb6zdb.codestart:movax,@datamovds,axmoval,x;movcl,2saral,cl;X/4movcl,4movbl,ysalbl,cl;16Yaddal,bl;X/4+16Ymovz,almovah,4chint21hendstart29.modelsmall.dataydb,.codestart:movax,@datamovds,axmoval,3;设al=3movcl,6mulcl;al*6movcl,4;设cl=4subal,cl;相减movbl,3idivbl;/3movy,al;商movy+1,ah;余数movah,4chint21hendstart习题五11进位标志CF=112先把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表示。1516(1)AL=30H(2)AL=B7H(3)AL=C8H(4)AL=38H27分支程序设计。完成如下公式的计算,请写出程序。(X+3)/2X>0Y=0X=0X×4X<0程序如下:DATASEGMENTXDB23YDBDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,XCMPAL,0JESUB2JGSUB1MOVCL,2SALAL,CLJMPSHORTSUB2SUB1:ADDAL,3SARAL,1SUB2:MOVY,ALMOVAH,4CHINT21HCODEENDSENDSTART28设X、Y、Z为字节单元。如果X≥0,Z=4X-Y/16,否则,Z=X的绝对值。编程序实现。程序如下:DATASEGMENTXDB3YDB5ZDBDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,XCMPAL,0JLSS1MOVCL,2SALAL,CLMOVBL,YMOVCL,4SARBL,CLSUBAL,BLJMPOUT1SS1:NEGALOUT1:MOVZ,ALMOVAH,4CHINT21HCODEENDSENDSTART29字数组M中有10个数据,分类统计其中正数、负数、0的个数,分别存入POSI、NEGA、ZERO单元。程序如下:DATA1SEGMENTMDW21,-34,32,112,-324,0,76,0,48,50POSIDWNEGADWZERODWDATA1ENDSCODE1SEGMENTASSUMECS:CODE1,DS:DATA1START:MOVAX,DATA1MOVDS,AXMOVCX,10LEASI,MAGAIN:CMPWORDPTR[SI],0JLLOWERJEEQUALINCPOSIJMPLPP1LOWER:INCNEGAJMPLPP1EQUAL:INCZEROLPP1:ADDSI,2DECCXJNZAGAINMOVAH,4CHINT21HCODE1ENDSENDSTART30试编写程序,从键盘接收一英文单词,以空格结束,将其存入BUF开始的存储单元中,并在最后加上字符串结束符’$’。主要程序部分:LEABX,BUFLOP:MOVAH,1INT21HCMPAL,20HJENEXTMOV[BX],ALINCBXJMPLOPNEXT:MOVBYTEPTR[BX],’$’31编程。将AX寄存器中的16位数分成4组,每组4位,从低到高分别放在AL,BL,CL,DL中。程序段:START:MOVAX,1234HMOVBX,AXANDAL,0FH;4ANDBL,0F0H;3ANDAH,0FHMOVCL,AH;2ANDBH,0F0HMOVDL,BH;1习题六11累加和TOTAL=8312循环统计X中0的个数13(1)将BB1:RCLAL,1改为BB1:ROLAL,1(2)将BB2:CMP[BX],’T’LOOPNEBB2改为:DECBXBB2:INCBXCMP[BX],’T’LOOPNEBB215计算Y=1×2+3×4+5×6+7×8+9×10的程序段答案:MOVAL,1MOVBL,2MOVDX,0MOVCX,5AA1:MULBLADDDX,AXINCBLMOVAL,BLINCBLLOOPAA116写程序段。查找CATT表中的字符”@”,找到后将SIGN单元置1,否则SIGN单元置0。cattdb'asd@ddd'signdb……movax,extramoves,axmovsign,0moval,'@'leadi,cattcldmovcx,7repnzscasbjcxzneemovsign,1nee:movah,4chint21h17写程序段。在长度为N的字数组VALUE中统计负数的个数并保存到AX中。valuedw2,-4,-5,3,6,6,-8nequ($-value)/2;元素个数……start:movax,datamovds,axmovcx,nmovbx,0movax,0rept1:movsi,value[bx];取出元素cmpsi,0jgelet1;≥0转let1incax;为负数,ax加1let1:addbx,2looprept118从键盘输入一个数字,在屏幕上显示出以该数字开始10个数字串。CODESEGMENTASSUMECS:CODESTART:MOVAH,1INT21HMOVCX,10MOVBL,ALREPT1:CMPBL,'9'JLENEXTSUBBL,10NEXT:MOVDL,BLMOVAH,2INT21HINCBLLOOPREPT1MOVAH,4CHINT21HCODEENDSENDSTART19datasegmentbunch1db'stadent'bunch2db'studEnt'dataendscodesegmentassumecs:code,ds:data,es:datastart:movax,datamovds,axmoves,axleasi,bunch1leadi,bunch2movbx,0;bh=相同的个数,bl=不同的个数movcx,7let1:moval,[si]cmpal,[di];两字符比较jzequl;相同转equlincbl;不同bl加1jmpout1equl:incbhout1:incsiincdilooplet1movdl,'n';显示'n',代表不同movah,2hint21haddbl,30h;加上ASCII码movdl,bl;显示不同的个数int21hmovdl,'e';显示'e',代表相同int21haddbh,30hmovdl,bh;显示相同的个数int21hmovah,4chint21hcodeendsendstart21DATASEGMENTSTRDB‘SDABFGH0’DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADI,STRSPACE:MOVCX,10MOVAL,[DI]CMPAL,0JEOUTCMPAL,20HJEDELETEJMPEXITSUBCX,DIMOVSI,DIDELETE:MOVBL,[SI+1]MOV[SI],BLINCSILOOPDELETEEXIT:JMPSPACEOUT:MOVAH,4CHINT21HCODEENDSENDSTART23设计思路:(1)用EQU伪指令获得需转换的十进制数的个数;(2)用双重循环。外循环控制个数,用x作为中间变量;(3)内循环将一个3位十进制数去掉ASCII码后按位数扩大10倍再相加,保存后即存储为二进制数;(4)分两个数组保存ASCII码表示的十进制数和转换后的二进制数。程序如下:;将内存中用ASCII码表示的100以内的十进制数转变为二进制数datasegmentscore1db36h,37h,20h,31h,30h,30h,38h,35h,20h,31h,30h,30h;即67,100,85,100xdwnequ3;三位数numequ(x-score1)/n;十进制数个数score2dwnumdup(0);保存转换后的二进制数dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovcx,nummovsi,-2movbx,0rept1:pushcx;保存外循环次数movcx,nrept2:moval,score1[bx];从score1取数cmpal,30h;判断是否0-9jlexitcmpal,39hjgexitandax,000fh;去掉ASCII码xchgax,xmovdx,10;将ax中前一次形成的数扩大10倍muldxxchgax,xaddx,ax;相加后保存到xexit:incbx;取下一位数looprept2popcx;弹出外循环次数addsi,2movax,xmovscore2[si],ax;转换后的数据保存到score2movx,0looprept1movah,4chint21hcodeendsendstart习题七12功能:两个字节数相加。X和BL相加保存到Y。13功能:键盘输入的字符保存到KEY单元中,直到按回车为止。14功能:将X单元中的十六进制3AH变为十进制入栈保存,AH中为余数。先将0008H入栈,再将0005H入栈,结果为58。16PUSHAXPUSHBXMOVBX,0LET1:MOVAH,1INT21HCMPAL,0DH;输入回车退出JZEXITMOVBUFFER[BX],AL;保存到BUFFERINCBXJMPLET1EXIT:POPBXPOPAXRETKEY_INENDP17KEY_IN_DECPROCPUSHAXPUSHBXMOVX,0MOVBX,0MOVSI,0LET1:MOVAH,1INT21HCMPAL,0DH;输入回车退出JZEXITMOVBUFFER[SI],AL;保存到BUFFERINCSIJMPLET1EXIT:MOVCX,SI;位数放在CXMOVSI,0LET2:MOVAL,BUFFER[SI]SUBAL,30HMOVAH,0XCHGAX,X;形成十进制数MOVBX,10MULBXXCHGAX,XADDX,AX;保存INCSILOOPLET2POPBXPOPAXRETKEY_IN_DECENDP23calcuprocpushaxpushbxpushsimovax,0moval,xandal,aljnszznegalmovfuhao,'-'zz:movsi,0movbx,10;将ax变为十进制数真值let1:movdx,0incsi;统计余数个数idivbxmovy[si],dx;在y单元保存余数cmpax,0jnzlet1popsipopbxpopaxretcalcuendp30DATASEGMENTADB9,-8,-7,6,5BDB-8,7,6,-5,4SUM1DBSUM2DBDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,5MOVSI,OFFSETACALLLADDMOVSUM1,BLMOVSI,OFFSETBCALLLADDMOVSUM2,BLMOVAH,4CHINT21HLADDPROCNEARPUSHCXPUSHAXPUSHSIXORBL,BLNEXT:MOVAL,[SI]ANDAL,ALJNSJJJADDBL,ALJJJ:INCSILOOPNEXTPOPSIPOPAXPOPCXRETLADDENDPCODEENDSENDSTART习题八16宏的作用:DOS功能调用。功能号用哑元指出。17宏的作用:两个操作数相加,结果保存在第3个数中。18宏的作用:DOS的2号显示功能。19宏的作用:定义VALUE数组,数组长度和初值由哑元指出。20缺少标号定义LOCALLETT1。宏的作用:两个哑元相减,结果为负则求补。27程序:.modelsmall.stack100h.codestart:input;键盘输入addal,20h;大写变为小写outputal;显示movah,4chint21hendstart28程序:.modelsmall.dataalphadb‘Computer’.codestart:displayalpha;显示字串movah,4chint21hendstart29程序:.modelsmall.stack100h.codestart:input;键盘输入cmpal,‘-’jnzstartnegx;求补movah,4chint21hendstart30程序:.modelsmall.stack100h.codestart:input;键盘输入movbl,alinput;输入第2个数addal,blmovah,0aaa;非压缩BCD码加法调整addax,3030houtputah;显示高位outputal;显示低位movah,4chint21hendstart
本文档为【汇编语言课后习题答案郑晓薇后的】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥18.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
小曹兄弟创作
暂无简介~
格式:doc
大小:20KB
软件:Word
页数:0
分类:
上传时间:2021-09-16
浏览量:19