• 306.42 KB
  • 2022-04-22 11:29:03 发布

编语言课后习题答案___郑晓薇.pdf

  • 47页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'习题一1分别将下列二进制数作为无符号数和带符号数转换为十进制和十六进制数11010011,01110111,10000011,00101111,10101010查看正确答案无符号数: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十六进制运算1A52H+4438H,3967H-2D81H,37H×12H,1250H×4H查看正确答案5E8AH,0BE6H,3DEH,4940H3将十进制数变为8位补码,做运算(结果用二进制、十六进制、十进制表示)29+53,73-24,-66+82,-102-15查看正确答案00011101+00110101=01010010=52H=8201001001+11101000=00110001=31H=4910111110+01010010=00010000=10H=1610011010+11110001=10001011=8BH=-1174用压缩BCD码计算(结果用二进制、BCD码、十进制表示)29+53,73-24,66+18,132+75查看正确答案00101001+01010011=01111100+00000110=10000010=82H=8201110011-00100100=01001111-00000110=01001001=49H=4901100110+00011000=01111110+00000110=10000100=84H=840000000100110010+01110101=0000000110100111+00000110=0000001000000111=0207H=2075符号位扩展(字节扩展为字,字扩展为双字)20A3H,94H,3456H,7FH,EC00H查看正确答案000020A3H,FF94H,00003456H,007FH,FFFFEC00H6若机器字长为16位,其无符号数表示范围是多少?带符号数表示范围是多少?分别用十进制和十六进制表示。查看正确答案无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH7写出下列十六进制数所能代表的数值或编码:(1)38H(2)FFH(3)5AH(4)0DH 查看正确答案(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将下列十进制数分别转换为二进制、十六进制、二进制补码、压缩BCD码和ASCII码:(1)108(2)46(3)-15(4)254查看正确答案(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写出下列算式的二进制运算结果,标志位CF、SF、ZF、OF分别是什么值?(1)56+63(2)83-45(3)-74+29(4)-92-37查看正确答案(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)-92-37=01111111B,CF=1,SF=0,ZF=0,OF=110查表,指出ASCII码0DH、0AH、07H、1BH、20H、40H、50H、70H对应的控制字符。查看正确答案回车、换行、响铃、ESC键、空格键、@、P、p习题二1写出冯·诺依曼计算机的基本特点。2如何解决内存速度与CPU速度不匹配问题。3写出计算机总线的分类与作用。4简述8086CPU寄存器的分组及各自的作用。5标志寄存器中都有哪些标志位与计算结果有关?6简述逻辑地址与物理地址的概念,两者的关系。7存储器为什么要分段?如何分段。88086系统把存储器分为哪四种类型的段?各自的特点是什么。98086CPU的地址线为20根,寻址空间为1MB。最少可划分为多少个逻辑段?最多呢?查看正确答案最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节)10在四种类型的段中通常使用哪些寄存器表示逻辑地址? 查看正确答案CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP11字节单元和字单元如何区分?若给出一个地址,如何知道要访问的是字节单元还是字单元?查看正确答案字节单元保存8位数,字单元保存16位数。根据源操作数的属性确定要访问的是字节单元还是字单元。12偶地址单元和奇地址单元在保存数据上有区别吗?查看正确答案对于字节单元来说,偶地址和奇地址一样;对于字单元而言,最好用偶地址保存,可减少CPU的访存次数。13有一个32K字节的存储区,首地址是3302:5AC8H,写出其首单元和末单元的物理地址。查看正确答案首单元的物理地址=38AE8H,末单元的物理地址=38AE8H+7FFFH=40AE7H14什么是有效地址?如何获得有效地址。15存储单元地址和内容表示如下,请画出存储单元存放形式。(1)(1280A)=3456H(2)(20021H)=4DH(3)(33450H)=37A520D1H16根据逻辑地址计算出物理地址,并解释逻辑地址与物理地址的对应关系。(1)2389:3DE9H(2)1230:EC92H(3)14D9:C202H查看正确答案(1)物理地址=27679H(2)物理地址=20F92H(3)物理地址=20F92H(2)和(3)的物理地址是一样的。说明逻辑地址不唯一,多个逻辑地址可对应到同一个物理单元上。17给出段地址和偏移地址如下,计算出对应的物理地址。(CS)=54C3H,(ES)=2569H,(DS)=1200H,(SS)=4422H,(BX)=5678H,(SP)=9945H,(IP)=0E54H,(DI)=63B1H查看正确答案代码段CS:IP的物理地址=55A84H堆栈段SS:SP的物理地址=4DB65H数据段DS:BX的物理地址=17678H附加段ES:DI的物理地址=2BA41H18已知堆栈区大小为512字节,栈底单元的物理地址为15230H。将两个字入栈保存后,当前栈指针所指单元的物理地址是多少?堆栈区中还能保存多少个数据?查看正确答案当前栈指针所指单元的物理地址是1522CH。堆栈区中还能保存254个字。19写出修改当前数据段200H开始的数据区数据的DEBUG命令。查看正确答案执行E20020对当前代码段从100H开始反汇编的DEBUG命令是什么?查看正确答案执行U10021在DEBUG下,要将寄存器CX的值修改为100H,应该执行什么命令?查看正确答案 执行RCX,然后输入10022在DEBUG下,怎样将数据段的0号~4号字节单元填入"a"、"b"、"c"、"d"?查看正确答案执行EDS:0‘a’‘b’‘c’‘d’习题三1名词解释:零地址指令,一地址指令,二地址指令。2分别写出与数据有关的7种寻址方式并举例说明。3已知(BX)=1290H,(SI)=348AH,(DI)=2976H,(BP)=6756H,(DS)=2E92H,(ES)=4D82H,(SS)=2030H,请指出下列指令的寻址方式,并求出有效地址EA和物理地址:MOVAX,BXMOVAX,1290HMOVAX,[BX]MOVAX,DS:[1290H]MOVAX,[BP]MOV[DI][BX],AXMOVES:[SI],AX查看正确答案MOVAX,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,物理地址=50CAAH4寄存器间接寻址方式可以使用哪些寄存器作为间址寄存器?5立即寻址方式和寄存器寻址方式的操作数有物理地址吗?6什么是段超越?段超越前缀代表什么?7请指出下列指令的错误:MOVAX,[CX]MOVAL,1200HMOVAL,BXMOV[SI][DI],AXMOVES:[DX],CXMOV[AX],VALUEMOVCOUNT,[SI]查看正确答案 MOVAX,[CX]错。CX不能为间址寄存器MOVAL,1200H错。立即数超出8位寄存器范围MOVAL,BX错。两个操作数不匹配MOV[SI][DI],AX错。两个变址寄存器不能在一起MOVES:[DX],CX错。DX不能为间址寄存器MOV[AX],VALUE错。AX不能为间址寄存器MOVCOUNT,[SI]错。两个操作数不能都是存储单元8根据题目要求,写出相应的汇编指令:(1)把BX寄存器的值传送给AX(2)将立即数15送入CL寄存器(3)用BX寄存器间接寻址方式将存储单元中的字与AX寄存器的值相加,结果在AX中(4)把AL中的字节写入用基址变址寻址的存储单元中(5)用SI寄存器和位移量VALUE的寄存器相对寻址方式,从存储单元中读出一个字送入寄存器AX(6)将AX中的数与偏移地址为2000H存储单元的数相减,结果在AX中查看正确答案(1)MOVAX,BX(2)MOVCL,15(3)ADDAX,[BX](4)MOV[BX+SI],AL(5)MOVAX,VALUE[SI](6)SUBAX,DS:[2000H]9写出用下列寻址方式将存储单元X中的第3个字取出,AX与其相加再放入Y单元的指令序列。(1)直接寻址(2)寄存器相对寻址(3)基址变址查看正确答案(1)ADDAX,[X+4]MOVY,AX(2)MOVBX,4ADDAX,X[BX]MOVY,AX(3)MOVBX,4MOVSI,OFFSETXADDAX,[BX+SI]MOVY,AX10在数据寻址方式中,哪种寻址方式的操作数与指令一起存放在代码段?查看正确答案立即寻址方式中操作数(立即数)和指令一起存放在代码段中。习题四1汇编语言程序有什么特点?什么是源程序?2简要说明从源程序到可执行程序的操作过程。3什么是伪指令?汇编指令与伪指令有何区别?写出4种常用的伪指令。48086指令系统分为哪几类?举例说明算术运算类指令的用法。 5在8086汇编语言中,哪些段寄存器可以用MOV指令赋值,哪些段寄存器不允许?6堆栈段寄存器SS和栈指针SP可以修改吗?如何修改?7入栈指令PUSH和出栈指令POP可以保存字节数据吗?要保存的话,如何实现?8有哪些方法可以获得操作数的有效地址?9解释下列伪指令的作用:(1)ASSUMECS:CODE,DS:DATA(2)ENDSTART(3)VALUEDW12,35,-6(4)STRINGDB‘INPUT:’(5)MESSDB5DUP(?)(6)XXDD12345678H(7)ORG0320H(8)CONTEQU2*3.1410根据题目,写出相关伪指令:(1)定义数据段DATA,并在数据段中定义两个字单元X、Y,初始值都是0(2)定义一个字符串SRING,保存’Computer’(3)定义有100个字节单元的COUNT数组,初始值均为空(4)用赋值伪指令定义PI为3.14(5)用类型操作符LABEL将VALUE单元定义为字节型查看正确答案(1)DATASEGMENTXDW0YDW0DATAENDS(2)STRINGDB’Computer’(3)COUNTDB100DUP(?)(4)PIEQU3.14(5)VALUELABELBYTE11下列伪指令有错吗?如果有错,请指出错误原因:(1)X1DB35H,0,-80(2)X2DB35,260,-1(3)X3DB1234H(4)X4DW100(5)X5DW100(?)(6)X6DD‘AB’查看正确答案(1)对。(2)错。260超出了字节范围。(3)错。X3是字节型,1234H是字型,不匹配。(4)对。(5)错。缺少DUP。(6)对。12写出下列指令的执行结果:TABLEDB3,33,33H(1)MOVAL,TABLE(2)MOVAX,WORDPTRTABLE(3)MOVDX,OFFSETTABLE(4)MOVCL,TABLE+2(5)MOVBX,SEGTABLE (6)MOVBX,TYPETABLE(7)LEADX,TABLE查看正确答案(1)AL=3。(2)AX=2103H。(3)DX=TABLE的偏移地址。(4)CL=33H(5)BX=TABLE的段地址。(6)BX=1。(7)DX=TABLE的偏移地址。13写出指令序列,分别求两个双精度数20125D68H和100349A6H的相加和相减运算。查看正确答案MOVDX,2012HMOVAX,5D68HMOVCX,1003HMOVBX,49A6HADDAX,BX(SUBAX,BX)ADCDX,CX(SBBDX,CX)14写出将DX、AX中的32位无符号数减CX中的16位无符号数,结果存放在DX、AX中的指令序列。查看正确答案SUBAX,CXSBBDX,015写出将extra段的段地址传送给ES寄存器的指令序列。查看正确答案MOVAX,extraMOVES,AX16根据给出的算式,写出指令序列(设X、Y、W为字节型,Z为字型):(1)Z=5(X+16)(2)Z=X/4-Y(3)Z=8X+Y/16-W^2(4)Z=(X+Y)(X-Y)-X/Y查看正确答案(1)MOVAL,16ADDAL,XMOVBL,5IMULBLMOVZ,AX(2)MOVBL,4MOVAL,XIDIVBLSUBAL,Y MOVZ,AX(3)MOVAL,XMOVBL,8IMULBLMOVDX,AXMOVAH,0MOVAL,YMOVBL,16IDIVBLCBWADDDX,AXMOVAH,0MOVAL,WIMULALSUBDX,AXMOVZ,DX(4)MOVAL,XADDAL,YMOVBL,XSUBBL,YMOVAH,0IMULBLMOVZ,AXMOVAL,XIDIVYCBWSUBZ,AX17分析下列程序段执行情况,给出结果:XDB5,15,30YDB22,14,6ZDW?……MOVBX,OFFSETXMOVAL,[BX]ADDAL,YINCBXSUBAL,[BX] MOVBL,Y+1IMULBLMOVZ,AX查看正确答案Z=(5+22-15)*14=16818源程序在汇编过程中,系统是如何获知程序从哪儿开始执行的?查看正确答案从伪指令ENDSTART处获知程序从START标号开始。19两个数8576H和9988H,分别作减法和加法运算,写出指令及运算结果。运算结果影响哪些标志?查看正确答案(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=020乘法和除法指令对于字和字节操作是如何进行的?21写出指令,用压缩BCD码实现下列运算:(1)Y1=56+34(2)Y2=128-35(3)Y3=68+23-45查看正确答案(1)MOVAL,56HMOVBL,34HADDAL,BLDAAMOVY1,AL(2)MOVAX,128HMOVBX,35HSUBAX,BXDASMOVY2,AL(3)MOVAL,68HMOVBL,23HADDAL,BLMOVBL,45HSUBAL,BL DASMOVY3,AL22写出指令,用非压缩BCD码实现下列运算:(1)Z1=78+46(2)Z2=95-27(3)Z3=12×6-33(4)Z4=(74+18)/6查看正确答案(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,6 AAD;除法调整DIVBLMOVBH,AH;余数保存在BHANDAX,000FHAAA;商调整MOVZ4,AX;保存商23编程序。从键盘输入一个数字,去掉ASCII码后保存到BUFF单元。查看正确答案.modelsmall.databuffdb?.codestart:movax,@datamovds,axmovah,1;键盘输入int21hsubal,30h;去掉ASCII码movbuff,almovah,4chint21hendstart24编程序。将键盘输入的小写字母变为大写字母显示在屏幕上。查看正确答案.modelsmall.codestart:movah,1;键盘输入int21hsubal,20h;变为大写movdl,almovah,2int21hmovah,4chint21hendstart25X和Y都是字节型数据,编写将两数相加的结果显示出来的程序段。 查看正确答案.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,4chint21hendstart26编写程序,建立一个0~9的平方根表,查表可得某数的平方根。查看正确答案datasegmentxdb"0.000","1.000","1.414","1.732","2.000"db"2.236","2.449","2.646","2.828","3.000";建立字符表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;地址保存到dx movah,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编写程序段,将AL中的数乘以6,与CL相减后再除以3;把商保存到Y单元,余数保存到Y+1单元。查看正确答案.modelsmall.dataydb?,?.codestart:movax,@datamovds,ax moval,3;设al=3movcl,6mulcl;al*6movcl,4;设cl=4subal,cl;相减movbl,3idivbl;/3movy,al;商movy+1,ah;余数movah,4chint21hendstart30用简化的程序格式编程序,在屏幕的5行12列上显示红底白字的字符串“Come”。习题五1转移指令分为哪两大类?转移指令的操作码和操作数如何表示?2写出与转移地址有关的寻址方式。3根据标志位转移的指令有哪些?执行什么操作时可以改变标志?4简述CPU实现分支的过程。5在短转移格式下,指令跳转的范围是多少?6在比较转移指令之前可以用什么指令进行判断?7比较转移指令为什么要分为无符号数比较和带符号数比较两类?8汇编语言可以控制和改变二进制某一位。有哪些指令可执行位操作?9TEST指令是如何实现判断的?请举例说明。10移位指令影响标志位吗?影响哪些标志位?11已知(BX)=7890H,写出指令实现逻辑左移2位。请问哪个标志位改变了?查看正确答案进位标志CF=112分析下列程序段,给出执行结果:MOVAX,1234HMOVCL,3SARAX,CLANDAX,0FHADDAL,30HMOVDL,ALMOVAH,2INT21H查看正确答案 先把AX的值除以8等于0246H,再把高12位屏蔽为0,剩下AL=06H加上30H变为ASCII码显示出来。13试说明下列程序段完成了什么操作?MOVAX,XMOVBX,YCMPAX,0JGEAA1NEGAXJMPAA2AA1:SUBAX,BXAA2:MOVZ,AX查看正确答案判断X>0,是,Z=X-Y;否则Z=X的绝对值14指出下列指令的错误所在。(1)AND[SI],3(2)SUBDS,AX(3)PUSH5(4)OR80H,AL(5)CMP[BX],TABLE(6)ROLAL,3查看正确答案(1)目的操作数是存储单元时,要用PTR伪操作指出单元的属性(2)DS段寄存器使用非法(3)立即数使用非法(4)目的操作数不允许是立即数(5)两个操作数不允许都是存储单元(6)移位次数超过1要用CL表示。15写出将AL.4清零的指令。(AL中除第4位外的其他位保持不变)。查看正确答案ANDAL,11011111B16分别指出每条指令执行结果:MOVAL,37H(1)ANDAL,0F0H(2)ORAL,03H(3)NOTAL(4)XORAL,0FH查看正确答案(1)AL=30H(2)AL=B7H(3)AL=C8H(4)AL=38H17简述操作系统对可执行程序的加载和执行过程。18PSP程序段前缀是什么时候建立的?占用多大内存空间?保存了什么内容、作用是什么? 19转移指令中的标号在汇编时被翻译成什么值?这种方法的优点是什么?20无条件转移指令JMP$+2作用是什么?其转移地址是多少?21什么是分支表?怎样用分支表实现多路分支?22哪些逻辑指令可以使操作数清零?请写出指令。23用逻辑指令实现将AX的低4位清0。24用移位指令实现AX的高8位和低8位交换。25写出判断一个操作数是否为负数的程序段。26写出程序段。判断字节单元X中的数是否为偶数,是偶数则显示’Y’,否则显示’N’。27分支程序设计。完成如下公式的计算,请写出程序。(X+3)/2X>0Y=0X=0X×4X<0查看正确答案分支程序设计。完成如下公式的计算,请写出程序。(X+3)/2X>0Y=0X=0X×4X<0程序如下:DATASEGMENTXDB23YDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,XCMPAL,0JESUB2JGSUB1MOVCL,2SALAL,CLJMPSHORTSUB2SUB1:ADDAL,3SARAL,1SUB2:MOVY,AL MOVAH,4CHINT21HCODEENDSENDSTART28设X、Y、Z为字节单元。如果X≥0,Z=4X-Y/16,否则,Z=X的绝对值。编程序实现。查看正确答案设X、Y、Z为字节单元。如果X≥0,Z=4X-Y/16,否则,Z=X的绝对值。编程序实现。程序如下:DATASEGMENTXDB3YDB5ZDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,XCMPAL,0JLSS1MOVCL,2SALAL,CLMOVBL,YMOVCL,4SARBL,CLSUBAL,BLJMPOUT1SS1:NEGALOUT1:MOVZ,ALMOVAH,4CHINT21HCODEENDSENDSTART29字数组M中有10个数据,分类统计其中正数、负数、0的个数,分别存入POSI、NEGA、ZERO单元。查看正确答案 字数组M中有10个数据,分类统计其中正数、负数、0的个数,分别存入POSI、NEGA、ZERO单元。程序如下:DATA1SEGMENTMDW21,-34,32,112,-324,0,76,0,48,50POSIDW?NEGADW?ZERODW?DATA1ENDSCODE1SEGMENTASSUMECS:CODE1,DS:DATA1START:MOVAX,DATA1MOVDS,AXMOVCX,10LEASI,MAGAIN:CMPWORDPTR[SI],0JLLOWERJEEQUALINCPOSIJMPLPP1LOWER:INCNEGAJMPLPP1EQUAL:INCZEROLPP1:ADDSI,2DECCXJNZAGAINMOVAH,4CHINT21HCODE1ENDSENDSTART30试编写程序,从键盘接收一英文单词,以空格结束,将其存入BUF开始的存储单元中,并在最后加上字符串结束符’$’。查看正确答案试编写程序,从键盘接收一英文单词,以空格结束,将其存入BUF开始的存储单元中,并在最后加上字符串结束符’$’。主要程序部分:LEABX,BUFLOP:MOVAH,1 INT21HCMPAL,20HJENEXTMOV[BX],ALINCBXJMPLOPNEXT:MOVBYTEPTR[BX],’$’31编程。将AX寄存器中的16位数分成4组,每组4位,从低到高分别放在AL,BL,CL,DL中。查看正确答案编程。将AX寄存器中的16位数分成4组,每组4位,从低到高分别放在AL,BL,CL,DL中。程序段:START:MOVAX,1234HMOVBX,AXANDAL,0FH;4ANDBL,0F0H;3ANDAH,0FHMOVCL,AH;2ANDBH,0F0HMOVDL,BH;1习题六1循环指令有哪几种?分别写出指令格式及作用。2循环指令根据什么判断循环是否结束?3用转移指令能否构成循环?试举例说明。4多重循环的循环控制如何实现?5在多重循环中转移指令的使用要注意哪些问题?6串处理过程中用到循环了吗?怎么使用的?7列出学过的串处理指令。8在串处理过程中,如何找到源串和目的串?9串处理指令都应和哪些重复前缀配合使用?请举例说明。10在串处理中,方向标志DF的作用是什么?方向标志如何设置?11写出下列程序段的执行结果。BUFFDB10,22,14,6,31TOTALDB?……MOVBX,OFFSETBUFFMOVCX,TOTAL-BUFFMOVAL,0 AA1:ADDAL,[BX]INCBXLOOPAA1MOVTOTAL,AL查看正确答案累加和TOTAL=8312分析下列程序段的功能。XDB2,-3,15,0,9,4……LEABX,XMOVCX,6MOVAX,0AA2:MOVAL,[BX]CMPAL,0JNENEXTINCAHNEXT:INCBXLOOPAA2查看正确答案循环统计X中0的个数13判断下列程序段能否完成给定功能。如有错误,请指出并改正。(1)统计AL中1的个数。要求AL保持原值。MOVBL,0MOVCX,8BB1:RCLAL,1JNCNEXTINCBLNEXT:LOOPBB1(2)在ALPHA中查找字母”T”,找到后退出循环。ALPHADB“ERTYU”……MOVBX,OFFSETALPHAMOVCX,5BB2:CMP[BX],’T’LOOPNEBB2查看正确答案 (1)将BB1:RCLAL,1改为BB1:ROLAL,1(2)将BB2:CMP[BX],’T’LOOPNEBB2改为:DECBXBB2:INCBXCMP[BX],’T’LOOPNEBB214源串STRG1和目的串STRG2分别放在数据段和附加段中,请写出含有各种段定义的程序段,完成将STRG1传送到STRG2的功能。15写出计算Y=1×2+3×4+5×6+7×8+9×10的程序段。查看正确答案计算Y=1×2+3×4+5×6+7×8+9×10的程序段答案:MOVAL,1MOVBL,2MOVDX,0MOVCX,5AA1:MULBLADDDX,AXINCBLMOVAL,BLINCBLLOOPAA116写程序。查找CATT表中的字符”@”,找到后将SIGN单元置1,否则SIGN单元置0。查看正确答案写程序段。查找CATT表中的字符”@”,找到后将SIGN单元置1,否则SIGN单元置0。cattdb"asd@ddd"signdb?……movax,extramoves,axmovsign,0moval,"@"leadi,cattcldmovcx,7repnzscasb jcxzneemovsign,1nee:movah,4chint21h17写程序段。在长度为N的字数组VALUE中统计负数的个数并保存到AX中。查看正确答案写程序段。在长度为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个数字串。查看正确答案从键盘输入一个数字,在屏幕上显示出以该数字开始10个数字串。CODESEGMENTASSUMECS:CODESTART:MOVAH,1INT21HMOVCX,10MOVBL,ALREPT1:CMPBL,"9"JLENEXTSUBBL,10NEXT:MOVDL,BLMOVAH,2INT21H INCBLLOOPREPT1MOVAH,4CHINT21HCODEENDSENDSTART19编程。比较两个字符串是否相同,统计并显示出相同的字符个数和不同的字符个数。查看正确答案datasegmentbunch1db"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,4chint21hcodeendsendstart20编程。在FOUND字数组中找出最小数存入MIN单元。21STRI单元存有10个字符的字符串,以0结尾,编程去掉其中的空格符,并将后续字符向前递补。查看正确答案DATASEGMENTSTRDB‘SDABFGH0’DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADI,STRSPACE:MOVCX,10MOVAL,[DI]CMPAL,0JEOUTCMPAL,20HJEDELETEJMPEXITSUBCX,DIMOVSI,DIDELETE:MOVBL,[SI+1]MOV[SI],BLINCSILOOPDELETEEXIT:JMPSPACE OUT:MOVAH,4CHINT21HCODEENDSENDSTART22某班级30名学生,编程序将全班成绩按升序排序。23将内存中用ASCII码表示的100以内的十进制数转变为二进制数。十进制数不够3位以20H(空格)补齐。查看正确答案设计思路:(1)用EQU伪指令获得需转换的十进制数的个数;(2)用双重循环。外循环控制个数,用x作为中间变量;(3)内循环将一个3位十进制数去掉ASCII码后按位数扩大10倍再相加,保存后即存储为二进制数;(4)分两个数组保存ASCII码表示的十进制数和转换后的二进制数。程序如下:;6-23.asm将内存中用ASCII码表示的100以内的十进制数转变为二进制数datasegmentscore1db36h,37h,20h,31h,30h,30h,38h,35h,20h,31h,30h,30h;即67,100,85,100xdw?nequ3;三位数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习题七1在汇编语言中,主程序是如何调用子程序的?2怎样才能正确地从子程序返回到主程序,先决条件是什么?3子程序名代表什么含义?子程序名是断点吗?为什么?4什么叫做跨段调用?从子程序调用指令CALL中能得知是跨段调用吗?5CALL指令如何将断点入栈保存的?6RET指令在何处使用?RET指令执行了哪些操作?7CALL指令为什么必须和RET指令成对使用?8为什么要用过程定义伪指令PROC来定义子程序?9子程序的属性是如何确定的?10为什么要进行现场保护?怎样做现场保护?11有哪几种常用的子程序参数传递方法?分别写出各自的特点。12阅读下列子程序,解释该程序的功能。SUBR1PROCNEARPUSHAXPUSHBXMOVAL,XADDAL,BLMOVY,ALPOPBX POPAXRETSUBR1ENDP查看正确答案功能:两个字节数相加。X和BL相加保存到Y。13解释下列子程序的功能。SUBR2PROCNEARMOVSI,0LET1:MOVAH,1INT21HCMPAL,0DHJZOUT1MOVKEY[SI],ALINCSIJMPLET1OUT1:RETSUBR2ENDP查看正确答案功能:键盘输入的字符保存到KEY单元中,直到按回车为止。14给出下列子程序的功能和执行结果。XDB3AH……SUBR3PROCNEARMOVAL,XMOVBL,10MOVDX,0LETE:MOVAH,0DIVBLMOVDL,AHPUSHDXCMPAL,0JNZLETERETSUBR3ENDP查看正确答案功能:将X单元中的十六进制3AH变为十进制入栈保存,AH中为余数。先将0008H入栈,再将0005H入栈,结果为58。 15写出子程序,从键盘输入一位十进制数,并保存到BUFFER单元中。16写出子程序,从键盘输入一个多位十进制数,并分别保存到BUFFER开始的单元中。查看正确答案KEY_INPROCPUSHAXPUSHBXMOVBX,0LET1:MOVAH,1INT21HCMPAL,0DH;输入回车退出JZEXITMOVBUFFER[BX],AL;保存到BUFFERINCBXJMPLET1EXIT:POPBXPOPAXRETKEY_INENDP17从键盘输入多位数字,转换成十进制数并保存到X单元中。查看正确答案KEY_IN_DECPROCPUSHAXPUSHBXMOVX,0MOVBX,0MOVSI,0LET1:MOVAH,1INT21HCMPAL,0DH;输入回车退出JZEXITMOVBUFFER[SI],AL;保存到BUFFERINCSIJMPLET1EXIT:MOVCX,SI;位数放在CXMOVSI,0LET2:MOVAL,BUFFER[SI]SUBAL,30H MOVAH,0XCHGAX,X;形成十进制数MOVBX,10MULBXXCHGAX,XADDX,AX;保存INCSILOOPLET2POPBXPOPAXRETKEY_IN_DECENDP18写出求数组元素累加和的子程序。19写出子程序。查十进制数的ASCII码表,对AL中的BCD码显示出十进制数。20编写将X单元中的二进制数显示为十六进制数的子程序。21编写将BX中的二进制数用十进制数显示出来的子程序。22编写将BX中的二进制数用二进制数显示出来的子程序。23写出对内存单元X中的补码求真值子程序,补码保存在BX中。查看正确答案calcuprocpushaxpushbxpushsimovax,0moval,xandal,aljnszznegalmovfuhao,"-"zz:movsi,0movbx,10;将ax变为十进制数真值let1:movdx,0incsi;统计余数个数idivbxmovy[si],dx;在y单元保存余数 cmpax,0jnzlet1popsipopbxpopaxretcalcuendp24写出两数相加运算的子程序。25写出两数相减运算的子程序。26写出两数相乘运算的子程序。27写出两数相除运算的子程序。28写出对AX中的二进制数按位相加子程序。29编写求数组中最大数的子程序。30编制一个计算数组中所有负数之和的子程序。并利用此子程序分别计算A数组和B数组中的负数之和,结果分别放在SUM1和SUM2单元中。查看正确答案DATASEGMENTADB9,-8,-7,6,5BDB-8,7,6,-5,4SUM1DB?SUM2DB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,5MOVSI,OFFSETACALLLADDMOVSUM1,BLMOVSI,OFFSETBCALLLADDMOVSUM2,BLMOVAH,4CHINT21HLADDPROCNEARPUSHCX PUSHAXPUSHSIXORBL,BLNEXT:MOVAL,[SI]ANDAL,ALJNSJJJADDBL,ALJJJ:INCSILOOPNEXTPOPSIPOPAXPOPCXRETLADDENDPCODEENDSENDSTART习题八1宏的作用是什么?宏是一种程序结构吗?2分别解释宏定义、宏调用、宏展开。3宏与子程序的区别是什么?4宏指令是什么?它能被翻译成机器代码吗?5写出宏调用的过程和子程序调用的过程,并对二者做一对比。6宏是怎样实现传参的?请与子程序传参进行对比。7请举例说明宏的变元是操作数和变元是操作码的用法。8利用宏可以定义多个存储单元吗?如何定义?9在宏定义中可以使用标号吗?是否需要说明?10在宏定义中能否出现分支程序段?11如何建立宏库?怎样打开宏库?12结构伪操作的作用是什么?13请举例说明结构预置和结构引用的用法。14写出重复汇编和条件汇编的主要作用。它们可以生成机器代码吗?15编写多模块程序时,需要加入哪些参数设置?16分析下列宏定义,指出它的作用。EXM1MACROX1MOVAH,X1INT21HENDM 查看正确答案宏的作用:DOS功能调用。功能号用哑元指出。17解释下列宏的功能。EXM2MACROA,B,CMOVAX,AADDAX,BMOVC,AXENDM查看正确答案宏的作用:两个操作数相加,结果保存在第3个数中。18指出下列宏的作用。EXM3MACROC1MOVAH,2MOVDL,C1INT21HENDM查看正确答案宏的作用:DOS的2号显示功能。19分析下列宏,指出它的作用。EXM4MACROA1,A2VALUEDWA1DUP(A2)ENDM查看正确答案宏的作用:定义VALUE数组,数组长度和初值由哑元指出。20下列宏是一个分支程序,宏定义中缺少标号的处理。请添加,并指出宏的功能。EXM5MACROB1,B2MOVAL,B1SUBAL,B2JNSLETT1NEGALLETT1:RETENDM查看正确答案缺少标号定义LOCALLETT1。宏的作用:两个哑元相减,结果为负则求补。21定义宏。完成两个操作数相乘,乘积在第3个操作数中。22分别写出子程序使用的保护现场和恢复现场的宏。23定义键盘输入一个字符的宏指令INPUT。 24定义显示一个字符的宏指令OUTPUT,要显示的字符用哑元DISP表示。25定义宏指令KEY_STR,实现从键盘输入一串字符。26定义宏指令DISPLAY,显示一串字符。27利用宏指令INPUT和OUTPUT实现将键入的大写字母变为小写显示。查看正确答案程序:.modelsmall.stack100h.codestart:input;键盘输入addal,20h;大写变为小写outputal;显示movah,4chint21hendstart28用宏指令DISPLAY显示存储单元ALPHA中的字符串’Computer’。查看正确答案程序:.modelsmall.dataalphadb‘Computer’.codestart:displayalpha;显示字串movah,4chint21hendstart29编程序。在键盘输入时,调用宏指令INPUT。对输入的字符判断是否为负号“-”,是则对X求补,不是则继续输入。查看正确答案程序:.modelsmall.stack100h.codestart:input;键盘输入 cmpal,‘-’jnzstartnegx;求补movah,4chint21hendstart30编程序。键盘输入两个一位的十进制数,做加法运算。加法结果调整为非压缩的BCD码,并显示出十进制结果(4-8.asm)。要求改用调用宏INPUT和宏OUTPUT实现键盘输入和显示部分。查看正确答案程序:.modelsmall.stack100h.codestart:input;键盘输入movbl,alinput;输入第2个数addal,blmovah,0aaa;非压缩BCD码加法调整addax,3030houtputah;显示高位outputal;显示低位movah,4chint21hendstart习题九1软件中断都有哪些?CPU是如何处理的?2硬件中断发生时,CPU怎样获知?CPU如何处理硬件中断?3中断的重要性是什么?若没有中断系统,微机能否工作?4什么是中断向量?什么是中断向量表?80X86系统的中断向量表在哪儿?580X86系统可以有多少个中断类型?中断类型号是如何划分的?6给出一个中断类型号,如何得到其中断向量?7每个中断类型都有一个中断处理程序吗?中断处理程序在那儿存放?8中断过程和子程序调用过程一样吗?有何异同?9中断返回指令和子程序返回指令作用一样吗?10子程序可以嵌套调用,中断可以嵌套吗?嵌套的条件是什么? 11如何设计用户自己的中断?都有哪些工作要做?12用什么指令可以设置中断向量?13用什么指令可以读取中断向量?14如何实现中断驻留?15怎样才能触发中断?16如何设置光标的位置?请举例说明。17写出实现清屏的指令序列。18用BIOS中断的什么功能可以显示带颜色的字符?19如何读取系统日期和时间?有几种方法可以实现?20定义一个带有哑元的宏,实现在屏幕上开窗口功能。21定义置光标宏,可以通过变元任意设定光标位置。22定义窗口宏,用红底黄字显示一行字符并上卷。23定义读取日期宏。24定义读取时间宏。25分析下列程序段,指出其功能。movah,06hmoval,0movch,row1movcl,rank1movdh,row2movdl,rank2movbh,colorint10h查看正确答案在屏幕的row1、rank1到row2、rank2开窗口,清窗口,设置字符颜色为color。26解释下列程序的作用。movah,2movdh,5movdl,10movbh,0int10h查看正确答案将光标设置在5行10列上。27下列宏的作用是什么?entermacromovah,2movdl,0dh int21hmovdl,0ahint21hendm查看正确答案回车换行宏。28写出下列程序段的功能。reptt2:movah,00hint1ahmovhigher1,cxmovlower1,dxcmpdx,91jlreptt2查看正确答案读取时钟计数器当前计数值,cx保存高位,dx保存低位;判断计数是否到91次(5秒),没到,继续循环读取,到5秒后做下面内容。29下列程序的作用是什么?试用直接写中断向量表的方式改写。movdx,offsetwin_timemovax,segwin_timemovds,axmoval,1chmovah,25hint21h查看正确答案设置1CH号中断的中断向量(win_time),将其保存到中断向量表中。30编程序。在屏幕上0页7行13列显示蓝底黄字的字符串“Windows”。31编程序。清屏后显示出一串字符,在下一行上可照样输入。32编写在窗口内显示3行内容的菜单程序。33编写在窗口中显示当前时间的程序。34编程实现在窗口中将键盘输入的小写字母加密后显示出来。提示:可在字母上加上某数做加密。查看正确答案程序如下:include9-3.mac;宏库.modelsmall.data letterdb"InputLetter:$"contdb?.codestart:movax,@datamovds,axclearsc;清屏clearsw;窗口清屏reptt:;置显示光标movah,2movdh,11;在11行30列显示movdl,30movbh,0int10h;显示串movah,9movdx,offsetletterint21h;置输入光标movah,2movdh,15;在15行30列输入movdl,30movbh,0int10h;输入小写字母movah,1int21haddal,20h;加密;显示加密后的字符movdl,almovah,2int21h;开窗口movah,6moval,1;上卷1行movch,8;从8行30列到15行60列 movcl,30movdh,15movdl,60movbh,27h;绿底灰字int10hinccont;可输入3次cmpcont,3jnerepttout1:movah,4chint21hendstart35编写程序,在屏幕上显示彩色的26个英文字母。查看正确答案程序如下:.modelsmall.dataletterdb?n="a";重复汇编m=1eh;蓝底黄字开始rept26;26个小写字母dbn,mn=n+1m=m+1endm.codestart:movax,@data;各个段都在代码段中movds,ax;开窗口movah,06hmoval,0movbh,37h;白底黑字0f0h,兰灰底灰白字37h,黄底白字0e7hmovch,3;从8行30列到15行60列movcl,3movdh,15movdl,60 int10h;置光标locate:movah,2movdh,6;光标在6行30列movdl,30movbh,0int10h;显示彩色的26个英文字母movbx,offsetletter+1movbp,bxmovbx,segletter+1moves,bxmovah,13hmoval,3movbh,0movcx,26;26个字母int10hmovah,4chint21hendstart36编写程序,在窗口中将键盘输入的一串字符中的大写字母和小写字母的个数分别统计并显示出来。查看正确答案程序如下:include9-4.mac;宏库.modelsmall.datamess1db"input:$"mess2db29,32dup(?)daxiedb?xiaoxiedb?.codestart:movax,@datamovds,axclearsc;清屏clearsw8,30,15,60,27h;开窗口,绿底灰白字 cursor12,30;置显示光标;显示提示movah,9movdx,offsetmess1int21h;输入串moval,0movah,10movdx,offsetmess2int21h;统计movcx,0movcl,mess2+1;输入的个数movbx,2;从第2个单元存放键入的字母let1:moval,mess2[bx]testal,20h;区分大小写jzlet2;为0,即大写转incxiaoxie;小写加1jmplet3let2:incdaxie;大写加1let3:incbxlooplet1windows8,30,15,60,27h;窗口内上卷cursor14,30;在16行30列显示addxiaoxie,30hdisplxiaoxie;显示小写个数windows8,30,15,60,27h;窗口内上卷adddaxie,30hdispldaxie;显示大写个数out1:movah,4chint21hendstart37编写对键盘输入一段英文的操作计时的程序。 查看正确答案程序如下:include9-4.mac.modelsmall.dataletter1db"Timestart=","$"letter2db"Timeend=","$"letter3db"Timetotal=","$"inputdb100,102dup(?)hourdb?minutesdb?secondsdb?persecdb?contdb0.codestart:movax,@datamovds,axclearsc;清屏cursor2,50;置光标movah,9movdx,offsetletter1;显示串1int21hsss:;读时间并显示movah,2ch;CH=小时,CL=分,DH=秒,DL=百分秒int21hmovbx,0movbl,chcalldisp_2_10;显示小时displ":";显示:movbx,0movbl,clcalldisp_2_10;分displ":";显示:movbx,0movbl,dh calldisp_2_10;秒displ":";显示:movbx,0movbl,dlcalldisp_2_10;百分秒subch,hour;计算时间差subcl,minutessubdh,secondssubdl,persecmovhour,ch;保存时间差movminutes,clmovseconds,dhmovpersec,dlinccontcmpcont,2;显示2次时间jzout1cursor7,10;置输入光标movdx,offsetinput;键盘输入movah,10int21hcursor3,50;置光标;显示串2movah,9movdx,offsetletter2int21hjmpsssout1:cursor4,50;置光标movah,9movdx,offsetletter3;显示串3int21h;显示时间差movcx,3movsi,offsethourmovbx,0www:movbl,[si];取出时、分、秒 calldisp_2_10;3次调用displ":";显示:incsiloopwwwmovah,4chint21h;子程序。二-十进制数转换。bx值用十进制显示。disp_2_10procstore_ss;保护现场movax,bx;bx传参movcx,0movbx,10;将ax变为十进制数let1:movdx,0inccx;统计余数个数idivbxpushdx;保存余数cmpax,0jnzlet1let2:;显示结果popax;将余数弹入axaddax,0030h;调整为ascii码movdl,almovah,2int21hlooplet2restore_ss;恢复现场retdisp_2_10endpendstart38编写读取时钟计数器的值,经过变换产生百位以内随机数的程序。查看正确答案程序如下:include9-4.mac.modelsmall .dataletter1db"Timestart=","$"letter2db"Timeend=","$"letter3db"Timetotal=","$"inputdb100,102dup(?)hourdb?minutesdb?secondsdb?persecdb?contdb0.codestart:movax,@datamovds,axclearsc;清屏cursor2,50;置光标movah,9movdx,offsetletter1;显示串1int21hsss:;读时间并显示movah,2ch;CH=小时,CL=分,DH=秒,DL=百分秒int21hmovbx,0movbl,chcalldisp_2_10;显示小时displ":";显示:movbx,0movbl,clcalldisp_2_10;分displ":";显示:movbx,0movbl,dhcalldisp_2_10;秒displ":";显示:movbx,0movbl,dlcalldisp_2_10;百分秒subch,hour;计算时间差 subcl,minutessubdh,secondssubdl,persecmovhour,ch;保存时间差movminutes,clmovseconds,dhmovpersec,dlinccontcmpcont,2;显示2次时间jzout1cursor7,10;置输入光标movdx,offsetinput;键盘输入movah,10int21hcursor3,50;置光标;显示串2movah,9movdx,offsetletter2int21hjmpsssout1:cursor4,50;置光标movah,9movdx,offsetletter3;显示串3int21h;显示时间差movcx,3movsi,offsethourmovbx,0www:movbl,[si];取出时、分、秒calldisp_2_10;3次调用displ":";显示:incsiloopwwwmovah,4chint21h;子程序。二-十进制数转换。bx值用十进制显示。disp_2_10procstore_ss;保护现场 movax,bx;bx传参movcx,0movbx,10;将ax变为十进制数let1:movdx,0inccx;统计余数个数idivbxpushdx;保存余数cmpax,0jnzlet1let2:;显示结果popax;将余数弹入axaddax,0030h;调整为ascii码movdl,almovah,2int21hlooplet2restore_ss;恢复现场retdisp_2_10endpendstart39编写80H号中断处理程序。中断发生时,显示彩色的0~9十个数字。'