汇编语言小程序例子

上传人:新** 文档编号:448549071 上传时间:2022-08-20 格式:DOCX 页数:33 大小:36.50KB
返回 下载 相关 举报
汇编语言小程序例子_第1页
第1页 / 共33页
汇编语言小程序例子_第2页
第2页 / 共33页
汇编语言小程序例子_第3页
第3页 / 共33页
汇编语言小程序例子_第4页
第4页 / 共33页
汇编语言小程序例子_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《汇编语言小程序例子》由会员分享,可在线阅读,更多相关《汇编语言小程序例子(33页珍藏版)》请在金锄头文库上搜索。

1、1. 编写统计AX中1、0个数的源程序。1的个数存入CH,0的个数存入。CODE SEGMENTASSUME CS:CODESTART: MOV CX, 0MOV DX,17AA1: SUB DX, 1JZ AA3SHL AX, 1JNC AA2INC CHJMP AA1AA2:INC CLJMP AA1AA3:MOV AH,4CHINT 21HCODE ENDSEND START2. 编写比较两个字符串STRING1和STRING2所含字符是否完全相同的源程序,若相同则显示 “MATCH”,若不相同则显示“NO MATCH”。程序:DATA SEGMENTR1 DB MATCH,0AH,0D

2、HR2 DB NO MATCH,0AH,0DHSTRING1 DB XXXXXN1 EQU $-STRING1STRING2 DB YYYYYN2 EQU $-STRING2DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,N1CMP AX,N2JNZ AA1ADD AX,1LEA SI,STRING1LEA DI,STRING2AA2: MOV BL,SIINC SIINC DISUB AX,1JZ AA3CMP BL,BHJZ AA2JMP AA1LEA BX,R1MOV CX,7MOV

3、 DL,BXINC BXMOV AH,2INT 21HLOOP AA4JMP ELEA BX,R2MOV CX,10MOV DL,BXINC BXMOV AH,2INT 21HLOOP AA5AA3:AA4:AA1:AA5:INT 21HCODE ENDSEND START3. 从键盘读入一个四位的十六进制数,CRT显示等值的二进制数.由于每个十六进制数位对应4个二进制,所以每读入一个十六进制位后,即可将其对应的4 个二进制位依次输出。由于数字。 9的ASCII码为30H39H,字母af 与AF的ASCI码为61H66H与41H46H,因此,如果输入的字母为数字0 9,则其低4位即为对应的二进

4、制位;如果输入的字符为字母a-f 或A F,则需要减7,然后通过移位将低4位依次输出。汇编程序如下:DATA SEGMENTMSG1DBHex:, $MSG2DB0DH, 0AH,Binary:, $COUNT EQU 4BUF DB 4 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX, DATALEA DX, MSG1MOV AH, 9INT 21HMOV CX, COUNTMOV SI, 0INPUT:;通过四次循环从键盘读入四位十六进制数MOV AH, 1INT 21HMOV BUFSI, ALDEC CXIN

5、C SICMP CX, 0JNZ INPUTJBE OK读入的字符=9 转向OK:NEXT3: LEADX,MSG2MOVAH,9INT21HMOVCX,COUNTMOVSI,0NEXT2: MOVBL,BUFSICMPBL,9SUB BL, 7;读入字符=9 减7OK: PUSH CXMOV CL ,4SHL BL, CL;逻辑左移4位,低4位d高4位MOV CX, 4; 4次循环将当前处理字符的4位二进制输出NEXT1: MOVDL, 0SHLBL, 1JNCSKIPINCDLSKIP: MOV AH, 2INT 21HLOOP NEXT1POP CX ;INC SILOOP NEXT2

6、; 4次循环将4位十六进制数,每位转换为对应的4位二进制EXIT: MOV AH, 4CHINT 21HCODE ENDSEND START4. 设从STRING开始存放一个以$为结束标志的字符串,试编写把字符串中的字符进行分类的 源程序,数字字符送入NUM开始的内存中,大写字母送入BCHAR开始的内存区中,小写字母 存入LCHAR开始的内存中,其他字符存入OTHER开始的内存区中。DATA SEGMENTSTRING DB abc123ABC,$N EQU $-STRINGNUM DB N DUP(?)BCHAR DB N DUP(?)LCHAR DB N DUP(?)OTHER DB N

7、DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA BX,STRINGDEC BXLEA SP,BCHARLEA CX,LCHARLEA DX,OTHERLEA SI,NUMAA1:INC BXMOV AL,BX/判断是否为$,是否结束CMP AL, $JZ AA5CMP AL,30HJC AA4CMP AL,39HJA AA2MOV SI,ALINC SIJMP AA1AA2:CMP AL,41HJC AA4CMP AL,5AHJA AA3MOV DI,SPMOV DI,ALINC SP

8、JMP AA1AA3:CMP AL,61HJC AA4CMP AL,7AHJA AA4MOV DI,CX/判定数字字符/判定大写字母/判定小写字母INC CXJMP AA1AA4:MOV DI,DX/判定其他MOV DI,ALINC DXJMP AA1AA5:MOV AH,4CH/ 返回 DOS 结束INT 21HCODE ENDSEND START5. 试编写找出首地址为BUF数据块中的最小偶数(该数据块中有100个带符号字节数),并 以十六进制的形式显示在CRT上的源程序。答:DATA SEGMENTBUFDB 100 DUP(?);要比较的数DATA ENDSCODE SEGMENTAS

9、SUME CS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEABX,BUF;BUF首地址送BXMOVCL,101;循环控制MOVDL,126;DL存放最小偶数MOVAH,0;标志是不是有偶数LOOP1:DECCL;循环计数减1JZTOEND;ZF标志0则跳转MOVAL,BX;BX内存内容送ALINCBX;BX指向下一内存单兀SHRAL,1;AL逻辑右移一位JCLOOP1;是基数则接着循环SHLAL,1;是偶数,因为上面右移了左移得到原数值MOVAH,1;能进行这一步则说明数值中有偶数CMPAL,DL;与CH比较大小JGELOOP1;AL大DL小贝循环MOVDL,

10、AL;保证DL存放最小偶数JMPLOOP1;CL不为0继续循环TOEND:CMPAH,1JCL;有借位则说明数值中无偶数直接返DOSMOVBL,DLSHRDL,1SHRDL,1SHRDL,1SHRDL,1ANDDL,0FHCMPDL,10JBL4ADDDL,7L4:ADDDL,30H;显示高四位对应的十六进制的ascii码MOVAH,2INT21HMOVDL,BLANDDL,0FHCMPDL,10JBL6ADDDL,7L6:ADDDL,30H;显示低四位对应的十六进制的ascii码MOVAH,2INT21HMOVDL,H;显示HMOVAH,2INT21HL:MOVAH,4CH;返回DOSINT

11、21HCODE ENDSEND START6. 已知数据块BUFA中存放15个互不相等的字节数据,BUFB中存放20个互不相等的字节数 据,试编写将既在BUFA中出现,又在BUFB中出现的数据存放到BUFC开始的缓冲区中的源程 序。答:DATA SEGMENTBUFA DB 41H,42H,43H,44H,45H,46H,47H,48H,49H,4AH,4BH,4CH,4DH,4EH,4FHBUFB DB 31H,32H,33H,41H,42H,43H,44H,45H,46H,47H,48H,49H,4AH,4BH,4CHDB 50H,51H,52H,53H,54HBUFC DB 15 DUP

12、 (0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,BUFALEABX,BUFCMOVCX,15;外层循环计数AA1:MOVAH,20;内层循环20次MOVAL,SILEADI,BUFBAA2:CMPAL,DI:比较BUFA , BUFB内容JNZAA3;内容不同,跳至AA3MOVBX,AL;内容相同,将其存入BUFC单元INCBXJMPAA4;找到相同内容,结束本次内层循环AA3:INCDIDECAH;内层循环计数减一JNZAA2;内层循环结束AA4:INCSILOOPAA1;外层循环结束MOVCX,15;此行以下将BUFC中的内容输出LEABX,BUFCBB1:MOVDL,BXINCBXMOVAH,2INT 21HLOOP BB1MOV AH,4CHINT 21HCODE ENDSEND START7.试编写由键盘输入一个以回车作为结束的字符串,将其按ASCII码由大到小的顺序输入到 CRT上的源程序。答:DATASEGMENT ;数据段BUF DB 200 DUP(?)DATA ENDSCODESEGMENT ;代码段ASSUME CS:CODE,DS:DATASTART: MOV AX, DAT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号