《汇编语言各章习题答案.pdf》由会员分享,可在线阅读,更多相关《汇编语言各章习题答案.pdf(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、汇编语言各章习题答案习题一答案:1.1 无符号数:11010011=211=D3H,01110111=119=77H,10000011=131=83H,00101111=47=2FH,10101010=170=AAH带符号数:1101001:!=-45=D3H,01110111=+119=77H,10000011=-125=83H,00101111=+47=2FH,10101010=-86=AAH1.2 5E8AH,0BE6H,3DEH,4940H1.3 00011101+00110101=01010010=52H=8201001001+11101000=00110001=31H=491011
2、1110+01010010=00010000=10H=1610011010+11110001=10001011=8BH=-1171.4 00101001+01010011=01111100+00000110=10000010=82H=:8201110011-00100100=01001111-00000110=01001001=49H=4901100110+00011000=01111110+00000110=10000100=84H=840000000100110010+01110101=0000000110100111+00000110=0000001000000111=0207H=207
3、1.5 000020A3H,FF94H,00003456H,007FH,FFFFEC00H1.6 无符号数:065535,OOOOH-FFFFH;带符号数:-32768+32767,8000H-7FFFH1.7(1)38H等于十进制数5 6,是十进制数5 6 的补码,数字8 的 ASCII码,十进制数38的压 缩 BCD码(2)FFH等于十进制数-1,是带符号数-1 的补码,无符号数为2555AH等于十进制数9 0,是十进制数9 0 的补码,大写字母Z 的 ASCII码(4)0DH等于十进制数1 3,是十进制数13的补码,回车符的ASCII码1.8(1)108=01101100B=6CH,补码
4、 01101100B,压缩 BCD 码 0000000100001000,ASCII 码313038H(2)46=00101110B=2EH,补码 00101110B,压缩 BCD 码 01000110,ASCII 码 3436H-15=11:1:LOOO1B=F1H,补码 11110001B,ASCII 码 2D3135H 254=0000000011111110B=00FEH,补码 0000000011111110B,压 缩 BCD 码0000001001010100,ASCII 码 323534H1.9(l)56+63=01110111B,CF=O,SF=O,ZF=O,OF=0(2)83
5、-45=00100110B,CF=O,SF=O,ZF=O,OF=0(3)-74+29=11010011B,CF=O,SF=1,ZF=O,OF=0(4)-92-37=01111111B,CF=1,SF=O,ZF=O,OF=11.1 0 回车、换行、响铃、ESC键、空格键、P、p习题二答案:2.9 最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节)2.10 CS:IP,DS:BX、SI、DI,ES:BX、Sk DI,SSSP、BP2.1 1 字节单元保存8 位数,字单元保存16位数。根据源操作数的属性确定要访问的是字节单元还是字单元。2.1 2 对于字节单元来说,偶地址和奇地址
6、一样;对于字单元而言,最好用偶地址保存,可减少CPU的访存次数。2.1 3 首单元的物理地址=38AE8H,末单元的物理地址=38AE8H+7FFFH=40AE7H2.16 物理地址=27679H 物理地址=20F92H 物理地址=20F92H(2)和的物理地址是一样的。说明逻辑地址不唯一,多个逻辑地址可对应到同一个物理单元上2.1 7 代码段CS:IP的物理地址=55A84H 堆栈段SS:SP的物理地址=4DB65H数据段DS:BX的物理地址=17678H附加段ES:DI的物理地址=2BA41H2.1 8 当 前栈指针所指单元的物理地址是1522CH。堆栈区中还能保存254个字。2.19 执
7、行 E 2002.20 执行 U 1002.21 执 行 R C X,然后输入1002.22 执行 E DS:0 a b c d习题三答案:3.3MOV AX,BXMOV AX,1290HMOV AX,BX源操作数为寄存器寻址,E A 无,物理地址无立即寻址,E A 无,物理地址无寄存器间接寻址,EA=1290H,物理地址=2FBB0HMOV AX,DS:1290H 直接寻址,EA=1290H,物理地址=2FBB0HMOV AX,BPMOV DIBX,AXMOV ES:SI,AX寄存器间接寻址,EA=6756H,物理地址=26A56H目的操作数为基址变址寻址,EA=3C06H,物理地址=325
8、26H寄存器间接寻址,EA=348AH,物理地址=50CAAH3.7MOV AX,CXMOVAL;1200HMOV AL,BXMOV SIDI,AXMOV ES:DX,CXMOV AX,VALUEMOV COUNTJSI错。3.8(1)MOV AX,BX(4)MOV BX+SI,ALCX不能为间址寄存器在itTH o错。错。错。立即数超出8 位寄存器范围两个操作数不匹配两个变址寄存器不能在一起DX不能为间址寄存器AX不能为间址寄存器错。两个操作数不能都是存储单元(2)MOV CL,15(3)ADD AX,BX(5)MOV AX,VALUESI(6)SUB AX,DS:2000H错。3.9(1)
9、ADD AX,X+3MOV Y AX(2)MOV BX,3ADD AX,XBXMOV YAX(3)MOV BX,3MOV SI,OFFSET XADD AX,BX+SIMOV Y,AX3.1 0 立即寻址方式中操作数(立即数)和指令一起存放在代码段中。习题四答案:4.10(1)DATA SEGMENTXDW0YDW0DATA ENDS(2)STRING DBComputer(3)COUNT DB 100 DUP(?)(4)PI EQU 3.14(5)VALUE LABEL BYTE4.11(1)对。(2)错。260超出了字节范围。(3)错。X 3 是字节型,1234H是字型,不匹配。(4)对。
10、(5)错。缺少 DUP。(6)对。4.12(1)AL=3o(2)AX=2103Ho(3)DX=TABLE 的偏移地址。(4)CL=33H(5)BX=TABLE 的段地址。(6)BX=1O(7)DX=TABLE 的偏移地址。4.13 MOV DX,2012HMOV AX,5D68HMOV CX,1003HMOV BX,49A6HADD AX,BX(SUB AX,BX)ADC DX,CX(SBB DX,CX)4.14 SUB AX,CXSBB DX,04.15 MOV AXzextraMOV ES,AX4.16(1)MOV AL,16ADD AL,XMOV BL,5IMULBLMOV Z,AX(2
11、)MOV BL,4MOV AL,XIDIVBLSUB AL,YMOV Z,AX(3)MOV AL,XMOV BL,8IMULBLMOV DX,AXMOVAHzOMOV AL,YMOV BL,16IDIVBLCBWADD DX,AXMOV AH,0MOV AL,WIMULALSUB DX,AXMOV Z,DX(4)MOV AL,XADD AL,YMOV BL,XSUB BL,YMOV AH,0IMULBLMOV Z,AXMOVAL,XIDIVYCBWSUB Z,AX4.174.184.19Z=(5+22-15)*14=168从伪指令END START处获知程序从START标号开始。(1)减法:(
12、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=O,SF=1 CF=1,OF=1,ZF=O,SF=O4.21(1)MOVAL,56HMOV BL,34HADD AL,BLDAAMOVY1,AL(2)MOV AXZ128HMOV BX,35HSUB AX,BXDASMOV Y2,AL(3)MOVAL,68HMOV BL,23HADD AL,BLMOV BL,45HSUB AL,BLDASMOV Y3,AL4.22(1)MOV
13、AX,0708HMOV BX,0406HADD AL,BLADDAH,BH;不用带进位加AAA;加法调整,含进位调整MOV BX,AXXCHG AH,AL;高4 位调整AAAMOV BH,ALMOV Z1,BX;保存十位、各 位,百位在C F中(2)MOV AX,0905HMOV BX,0207HSUB AL,BLSUBAH,BH;不用带借位减AAS;减法调整MOV Z2,AX(3)MOV AX,0102HMOV BX,0006HMULBX;乘法先不用调整MOV BX,0303HSUB AX,BXAAS;减法调整MOV Z3,AX(4)MOV AX,0704HMOV BX,0108HADD A
14、L,BLADD AH,BHAAA;加法调整MOV BL,6AAD;除法调整DIV BLMOV BH,AH;余数保存在BHAND AX,OOOFHAAA;商调整MOV Z4,AX;保存商4.2 3 编程序。从键盘输入一个数字,去掉ASCII码后保存到BUFF单元。.model small.databuffdb?.codestart:mov ax,datamov ds,axmov ah,l;键盘输入int21hsub al,30h;去掉 ASCII 码mov buff,almov ah,4chint 21hend start4.2 4 编程序。将键盘输入的小写字母变为大写字母显示在屏幕上。.mod
15、el small.codestart:mov ah,l;键盘输入int 21hsubal,20h;变为大写mov dlzalmov ah,2int 21hmov ah,4chint 21hend start4.25X 和 Y 都是字节型数据,编写将两数相加的结果显示出来的程序段。.model small.dataxdb 12hy db34h.codestart:mov ax,datamov ds,axmov alzxadd al,y;结果为 46Hmov ah,al;AH=46Hand al,Ofh;AL=06Hmov cl,4rol ah,cl;AH=64Hand ah,Ofh;AH=04H
16、add axz3030h;AX=3436Hmov bxzaxmov dl,bh;显示 4mov ah,2int 21hmov dl,bl;显示 6int21hmov ah,4chint 21hend start4.2 6 编写程序,建立一个。9 的平方根表,查表可得某数的平方根。data segmentx db O.OOO/l.OOO/lM/l7S2,2.000db,2.236;2.449,2.646,2.828,3.000;建立字符表ydb5 dup(?);存放查到平方根u db 3;要查的数data endscode segmentassume cs:code,ds:datastart:m
17、ov ax,datamov ds,axmov al,u;要查的数mov cl,5mul cl;u*5=15(号单元开始)mov ah,0mov bx,ax;地址保存到bxmov si,0letl:mov al,xbx;取出平方根数字mov ysi,al;存入yinc siinc bxloop letl;循环取出5 次mov ah,4chint21hcode endsend start4.2 7 编写查表程序。建立一个班级姓名表,给出学号,可显示出其姓名。.model small.dataxl db zhang yan$;姓名为10个字符宽度x2 db li li$x3 db wang Ian$
18、x4 db zhao xue$x5 db li jiang$u db 3;要查的学号.codestart:mov ax,datamov ds,axmov al,u;给出学号mov cl,10mul cl;u*10=30(号单元开始)mov ah,0mov dx,ax;地址保存到dxmov ahz9;9 号功能显示字符串int 21hmov ah,4chint21hend start4.2 8 编程实现公式计算Z=X/4+16Yo.model small.datax db4y db 6z db?.codestart:mov ax,datamov ds,axmov al,x;mov cl,2sar
19、aI,cl;X/4mov cl,4mov bl,ysal bl,cl;16Yadd al,bl;X/4+16Ymov z,almov ah,4chint 21hend start4.2 9 编写程序段,将 A L 中的数乘以6,与 C L相减后再除以3;把商保存到Y 单元,余数保存到Y+1单元。.model small.datay db?z?.codestart:mov ax,datamov ds,axmov al,3;设 al=3mov cl,6mul cl;al*6mov cl,4;设 cl=4sub al,cl;相减mov bl,3idiv bl;/3mov y,al;商mov y+l,
20、ah;余数mov ah,4chint 21hend start习题五答案:5.11 进位标志CF=15.1 2 先把A X 的值除以8 等于0246H,再把高12位屏蔽为0,剩下AL=06H加上30H变为ASCII码显示出来。5.1 3 判断X 0,是,Z=X-Y;否则Z二 X 的绝对值5.14(1)目的操作数是存储单元时,要 用 PTR伪操作指出单元的属性。(2)DS段寄存器使用非法(3)立即数使用非法。(4)目的操作数不允许是立即数 两个操作数不允许都是存储单元移位次数超过1 要用CL表示。5.15 AND A L JIO lllllB5.16(1)AL=30H(2)AL=B7H(3)AL
21、=C8H(4)AL=38H5.27 分支程序设计。完成如下公式的计算,请写出程序。(X+3)/2 X0Y=0 X=0L XX4 X0程序: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,4CHINT21HCODE ENDSEND START5.2 8 设 X
22、、Y、Z 为字节单元。如果X20,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 ALZXCMP AL,0JLSS1MOV CL,2SAL AL,CLMOV BL,YMOV CL,4SAR BL,CLSUB AL,BLJMP OUT1SSI:NEG ALOUT1:MOV Z,ALMOV AH,4CHINT21HCODE ENDSEND START5.29字数组M 中有10个
23、数据,分类统计其中正数、负数、0 的个数,分别存入POSI、NEGA、ZERO单元。程序如下:DATA1 SEGMENTMDW21,-34,32,112,-324,0,76,0,48,50POSIDW?NEGADW?ZERODW?DATA1 ENDSCODEI SEGMENTASSUME CS:CODE1,DS:DATA1START:MOV AX,DA7A1MOV DS,AXMOV CX,10LEA SI,MAGAIN:CMP WORD PTR SI,0儿 LOWER正 EQUALINC POSIJMP LPP1LOWER:INC NEGAJMP LPP1EQUAL:INC ZEROLPP1:
24、ADD Sl,2DEC CXJNZ AGAINM0VAH,4CHINT21HCODEI ENDSEND START5.3 0 试编写程序,从键盘接收一英文单词,以空格结束,将其存入BUF开始的存储单元中,并在最后加上字符串结束符S。主要程序部分:LEABX,BUFLOP:MOVAH,1INT21HCMPAL,20HJENEXTMOVBX,ALINCBXJMPLOPNEXT:MOVBYTE PTRBX,S5.3 1 编程。将A X寄存器中的1 6位数分成4组,每组4位,从低到高分别放在AL,BL,CL,DL 中。程序段:START:MOV AX,1234HMOV BX,AXAND AL,OFH;
25、4AND BL,OFOH;3AND AH,0FHMOV CL,AH;2AND BH,OFOHMOV DL,BH;1习题六答案:6.11 累加和 TOTAL=836.1 2 循环统计X中0的个数6.13(1)将 BB1:RCLAL,1 改为 BB1:ROLAL,1(2)将 BB2:CMP BX;rLOOPNE BB2改为:DEC BXBB2JNC BXCMP BX,TLOOPNE BB26.15 计算 Y=1X 2+3X4+5X6+7X8+9X10 的程序段答案:MOV AL,1MOV BL,2MOV DX,0MOV CX,5AA1:MULBLADD DX,AXINC BLMOVAL,BLINC
26、 BLLOOP AA16.1 6 写程序段。查找CATT表中的字符,找到后将SIGN单元置1,否则SIGN单元置0。catt db asddddsign db?mov ax,extramov es,axmov sign,0mov al/lea di,cattcldmov ex,7repnz scasbjexz neemov sign,lnee:mov ah,4chint21h6.1 7 写程序段。在长度为N 的字数组VALUE中统计负数的个数并保存到A X中。value dw 2,-4,-5,3,6,6,-8n equ($-value)/2;元素个数start:mov ax,datamov d
27、s,axmov cx,nmov bx,0mov ax,0reptl:mov si,valuebx;取出元素emp si,0jge letl;2 0 转 letlinc ax;为负数,ax加 1letl:add bx,2loop reptl6.1 8 从键盘输入一个数字,在屏幕上显示出以该数字开始10个数字串。CODE SEGMENTASSUME CS:CODESTART:MOV AH,1I NT 21HMOV CX,10MOV BL,ALREPT1:CMP BL,9JLE NEXTSUB BL,10NEXT:MOV DL,BLMOV AH,2I NT 21HINC BLLOOP REPT1MO
28、V AH,4cHINT21HCODE ENDSEND START6.1 9 编程。比较两个字符串是否相同,统计并显示出相同的字符个数和不同的字符个数。data segmentbunchl db stadentbunch2 db studEntdata endscode segmentassume cs:code,ds:data,es:datastart:mov axzdatamov ds,axmov es,axlea si,bunchllea di,bunch2mov bx,0;bh=相同的个数,bl二不同的个数mov ex,7letl:mov al,sicmpal,di;两字符比较jz eq
29、ul;相同转 equlinc bl;不同bl加 1jmp outlequl:inc bhoutlrinc siinc diloop letlmov dl/n;显示n,代表不同mov ah,2hint 21hadd bl,30h;力口上ASCII码mov dl,bl;显示不同的个数int 21hmov dl/e;显示官,代表相同int 21hadd bh,30hmov dl,bh;显示相同的个数int 21hmov ah,4chint 21hcode endsend start6.21 STRI单元 存 有10个字符的字符串,以0结尾,编程去掉其中的空格符,并将后续字符向前递补。DATA SEG
30、MENTSTR DB SDABFGHODATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DI,STRSPACE:MOV CX,10MOVAL,DICMP AL,0JE OUTCMP AL,20HJE DELETEJMP EXITSUB CX,DIMOV SI,DIDELETE:MOV BL,Sl+lMOV SI,BLINC SILOOP DELETEEXIT:JMP SPACEOUT:MOV AH,4CHINT21HCODE ENDSEND START6.2 3 将内存中用ASCII码表示的100以
31、内的十进制数转变为二进制数。十进制数不够3 位以 20H(空格)补齐。设计思路:(1)用 E Q U 伪指令获得需转换的十进制数的个数;(2)用双重循环。外循环控制个数,用 x 作为中间变量;(3)内循环将一个3 位十进制数去掉ASCII码后按位数扩大10倍再相加,保存后即存储为二进制数;(4)分两个数组保存ASCII码表示的十进制数和转换后的二进制数。程序如下:;6-23.a s m 将内存中用ASCI I码表示的100以内的十进制数转变为二进制数data segmentscorel db 36h,37h,20h,31 h,30h,30h,38h,35 h,20h,31 h,30h,30h;
32、即 67,100,85,100 x 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 ex,nummov si,-2mov bx,0reptl:push ex;保存外循环次数mov ex,nrept2:mov a I,scorel bx;从 scorel取数emp a 1,30h;判断是否0-9j1 exitemp a 1,39hjg exitand ax,O
33、OOfh;去掉ASCI 1码xchg ax,xmov dx,10;将 2乂中前一次形成的数扩大10倍mu I dxxchg ax,xadd x,ax;相加后保存到Xexit:inc bx;取下一位数Ioop rept2pop ex;弹出外循环次数add si,2mov ax,xmov score2si,axmov x,0Ioop reptlmov ah,4chi nt 21hcode endsend start;转换后的数据保存到score2运行结果:-dds:00B45:00000B45:001005257030643631 30 30 38 35-20 31 30 30 00 00 43
34、00 67 10085 100.C.00 64 00 00 0000 00 00 00 00 00 00 00 d.U.d.可以看到,67转换为0043,100转换为0064,85转换为0055。在DEBUG下显示的内存单元是十六进制表示,实际存储的是二进制数。习题七答案:7.1 2 功能:两个字节数相加。X和BL相加保存到Y。7.1 3 功能:键盘输入的字符保存到KEY单元中,直到按回车为止。7.14 功能:将X单元中的十六进制3AH变为十进制入栈保存,A H中为余数。先 将0008H入栈,再 将0005H入栈,结果为58。7.1 6 写出子程序,从键盘输入一个多位十进制数,并分别保存到BU
35、FFER开始的单元中。KEY_IN PROCPUSH AXPUSH BXMOV BX,0LET1:MOVAH,1INT21HCMP ALQDH;输入回车退出JZ EXITMOV BUFFERBX,AL;保存到 BUFFERINC BXJMP LET1EXIT:POP BXPOP AXRETKEYJN ENDP7.1 7 从键盘输入多位数字,转换成十进制数并保存到X单元中。KEY_IN_DEC PROCPUSH AXPUSH BXMOV X,0MOV BX,0MOV SI,0LET1:MOVAH,1INT21HCMP AL,ODH;输入回车退出JZ EXITMOVBUFFERSILAL;保存到B
36、UFFERINC SIJMP LET1EXIT:MOV CX,SI;位数放在CXMOV SI,0LET2:MOV AL,BUFFERSISUB AL,30HMOV AH,0XCHG AX,X;形成十进制数MOV BX,1OMULBXXCHG AX,XADD X,AX;保存INC SILOOP LET2POP BXPOP AXRETKEY_IN_DECENDP7.2 3 写出对内存单元X 中的补码求真值子程序,补码保存在A X中。calcu procpush axpush bxpush simov ax,0mov al,xand al,aljns zzneg almov fuhao/-zz:mo
37、v siz0mov bx,10;将ax变为十进制数真值letl:mov dx,0inc si;统计余数个数idiv bxmov ysi,dxcmp ax,0;在y 单元保存余数jnz letlpop sipop bxpop axretcalcu endp7.3 0 编制一个计算数组中所有负数之和的子程序。并利用此子程序分别计算A 数组和B 数组中的负数之和,结果分别放在SUM1和 SUM2单元中。DATA SEGMENTDATAADB 9,-8,-7,6,5BDB-8,7,6,-5,4SUMI DB?SUM2 DB?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:
38、START:MOV AX,DATAMOV DS,AXMOV CX,5MOV SI,OFFSETCALL LADDMOV SUMI,BLMOV SI,OFFSETCALL LADDMOV SUM2,BLMOV AH,4CHINT21HABLADDPROCNEARPUSHCXPUSHAXPUSHSIXORBL,BLNEXT:MOVAL,SIANDAL,ALJNSJJJADDBL,ALJJJ:INC SILOOPNEXTPOPSIPOPAXPOPCXRETLADDENDPCODE ENDSEND START习题八答案:8.1 6 宏的作用:DOS功能调用。功能号用哑元指出。8.1 7 宏的作用:两个
39、操作数相加,结果保存在第3个数中。8.1 8 宏的作用:DOS的2号显示功能。8.1 9 宏的作用:定义VALUE数组,数组长度和初值由哑元指出。8.2 0 缺少标号定义LOCAL LETT1。宏的作用:两个哑元相减,结果为负则求补。8.2 7 程序:.mode I smaI I.stack 100h.codes ta rt:i nputadd a 1,20houtput a Imov ah,4chin t 21hend s ta rt;键盘输入;大写变为小写;显示8.2 8 程序:.mode I smaI I.dataa Ipha db Computer.codes ta r t:d isp
40、 la y a I pha;显示字串mov ah,4chin t 21hend s ta rt8.2 9 程序:.mode I smaI I.stack 100h,codes ta rt:input;键盘输入cmp al,-jnz s ta rtneg x;求补mov ah,4chin t 21hend start8.3 0程序:.mode I smaI I.stack 100h.codestart:i nputmov b 1,a 1i nputadd a 1,b 1mov ah,0;键盘输入;输入第2个数aaa;非压缩BCD码加法调整add ax,3030houtput ahoutput a
41、 1;显示高位;显示低位mov ah,4chint 21hend start习题九答案:9.2 6 在屏幕的row、rank1到 row2、rank2开窗口,清窗口,设置字符颜色为color。9.2 7 将光标设置在5 行 10列上。9.2 8 回车换行宏。9.2 9 读取时钟计数器当前计数值,ex保存高位,d x保存低位;判断计数是否到9 1 次(5秒),没到,继续循环读取,到 5 秒后做下面内容。9.3 0 设置1CH号中断的中断向量(w in.tim e),将其保存到中断向量表中。9.3 5 编程实现在窗口中将键盘输入的小写字母加密后显示出来。程序如下:include 9-3.mac;宏
42、库.model small.dataletter db Input Letter:$cont db?.codestart:mov ax,datamov ds,axclearsc;清屏clearsw;窗口清屏reptt:;置显示光标int lOh;显示串mov ah,9mov dxzoffset letterint 21hmov ah,2mov dh,llmov dl,30mov bh,0;在11行30列显示;置输入光标mov ah,2mov dh,15mov dl,30mov bh,0;在15行30列输入int lOh;输入小写字母mov ah,lint 21hadd al,20h;显示加密后
43、的字符mov dl,almov ah,2;加密int 21h;开窗口mov ah,6mov al,lmov ch,8mov cl,30mov dh,15mov dl,60mov bh,27hint lOhinc contcmp cont,3;上 卷1行;从8行30列 到15行60歹IJ;绿底灰字;可输入3次jne repttoutl:mov ah,4chint 21hend start9.36编写程序,在屏幕上显示彩色的26个英文字母。程序如下:.model small.dataletter db?n=a;重复汇编m=leh;蓝底黄字开始re pt 26;26个小写字母db n,mn=n+lm
44、=m+lendm.codestart:mov ax,data;各个段都在代码段中mov ds,ax;开窗口mov ah,06hmov alz0mov bh,37h;白底黑字OfOh,兰灰底灰白字37h,黄底白字0e7hmov ch,3;从8 行 30列到15行 60列mov cl,3mov dh,15mov dl,60int lOh;置光标locate:mov ah,2mov dh,6;光标在6 行 30列mov dl,30mov bh,0int lOh;显示彩色的26个英文字母mov bx,offset letter+1mov bp,bxmov bx,seg letter+1mov es,b
45、xmov ah,13hmov al,3mov bh,0mov ex,26;26 个字母int lOhmov ah,4chint 21hend start9.37编写程序,在窗口中将键盘输入的一串字符中的大写字母和小写字母的个数分别统计并显不出来。程序如下:include 9-4.mac;宏库.model small.datamessl db input:$mess2 db 29,32 dup(?)daxie db?xiaoxie db?.codestart:mov ax,datamov ds,axclearscclearsw 8,30,15,60,27bcursor 12,30;显示提示mov
46、 ah,9mov dx,offset messl;清屏;开窗口,绿底灰白字;置显示光标int 21h;输入串mov alz0mov ah,10mov dx,offset mess2int 21h;统计mov cx,0mov clzmess2+lmov bx,2letl:;输入的个数;从第2 个单元存放键入的字母mov alzmess2bxtest al,20hjz Iet2inc xiaoxiejmp Iet3;区分大小写;为 0,即大写转;小写加1Iet2:inc daxieIet3:inc bxloop letlwindows 8,30,15,60,27bcursor 14,30add x
47、iaoxie,30h;大写加1;窗口内上卷;在16行 30列显示displ xiaoxiewindows 8,30,15,60,27badd daxie,30h;显示小写个数;窗口内上卷displ daxie;显示大写个数outl:mov ah,4chint 21hend start9.38编写对键盘输入一段英文的操作计时的程序。程序如下:include 9-4.mac.model small.dataletterl db Time start=letter?db Time end=Ietter3 db Time total=input db 100,102 dup(?)hour db?min
48、utes db?seconds db?persec db?cont db 0.codestart:mov ax,datamov ds,axclearsccursor 2,50mov ah,9mov dx,offset letterlint 21h;清屏;置光标;显示串1sss:;读时间并显示mov ah,2chint 21h;CH=小时,(21_=分,D H T DL=百分秒mov bx,0mov bl,chcall disp_2_10displmov bx,0mov bl,clcall disp_2_10displmov bx,0mov bl,dh;显示小时;显示:;分;显示:call di
49、sp_2_10displmov bx,0渺;显示:mov bl,dlcall disp_2_10sub ch,hoursub cl,minutessub dh,secondssub dl,persecmov hour;chmov minuteszclmov seconds,dhmov persec,dlinc contcmp cont,2jz outlcursor 7,10mov dx,offset inputmov ah,10int 21hcursor 3,50;显不串2mov ah,9mov dx,offset Ietter2int 21hjmp sssoutl:cursor 4,50mo
50、v ah,9mov dx,offset Ietter3int 21h;显示时间差mov ex,3mov si,offset hourmov bx,0WWW:mov bl,sicall disp_2_10displinc siloop WWWmov ah,4ch;百分秒;计算时间差;保存时间差;显示2 次时间;置输入光标;键盘输入;置光标;置光标;显示串3;取出时、分、秒;3 次调用;显示:int21h;子程序。二-十进制数转换。bx值用十进制显示disp_2_10 procstore_ss;保护现场mov ax,bxmov cx,0mov bx,10letl:mov dx,0inc exidi