汇编经典代码_第1页
汇编经典代码_第2页
汇编经典代码_第3页
汇编经典代码_第4页
汇编经典代码_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 顺序程序设计将两个多位十进制数相加,要求被加数、加数均以ASC码形式各自顺序存放在以DATA1和DATA2为首的五个内存单元中(低位在前),结果送回DATA1处。 DATA SEGMENT DATA1 DB 34H,35H,39H,38H,36H, ;被加数 DATA2 DB 37H,34H,33H,36H,32H, ;加数 DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,DATA1 ;有效地址送SI,为调用显示子程序做准备 CALL DISPL

2、AY ;调用显示子程序 CALL CRLF ;调用回车换行子程序 LEA SI,DATA2 ;有效地址送SI,为调用显示子程序做准备,同时为加法运算做准备 CALL DISPLAY ;调用显示子程序 CALL CRLF ;调用回车换行子程序 LEA DI,DATA1 ;有效抵制送DI,为加法运算做准备 MOV AX,0 MOV BX,0 MOV CL,05H ;记录循环次数 ADDS: MOV AL,SI ;将加数送往AL SUB AL,30H ADD AL,BL ;加上进位 MOV BL,DI ;将被加数送往BL SUB BL,30H ADD AL,BL ;加法运算 ADD AL,30H C

3、MP AL,3AH JA SUBA ;结果=10,跳到SUBA JB NSUBA SUBA: SUB AL,0AH ;减去10的值,并置BL为1 MOV BL,01H JMP CONTINUE NSUBA: MOV BL,00H ;置BL为0 CONTINUE:MOV DI,AL ;将相加的结果从AL送往DI的地址,即DATA1的地址 INC DI ;地址加1 INC SI ;地址加1 LOOP ADDS ;循环 JC SHUCHU JNC SHUCHU2 SHUCHU2: MOV AL,31H ;CF为1设置结果最高位为1 JMP CONTINUE2 SHUCHU:MOV AL,30H ;C

4、F为0设置结果最高位为0 CONTINUE2:MOV DI,AL LEA SI,DATA1 ;将DATA1的有效地址送往SI,为调用DISPLAY子程序做准备 CALL DISPLAY ;调用DISPLAY子程序 MOV AX,4C00H ;返回DOS INT 21H MAIN ENDP CRLF PROC NEAR ;回车、换行 于功能 MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H RET CRLF ENDPDISPLAY PROC NEAR ;显示于功能 MOV BX,0006H ;记录循环次数 DSL: MOV D

5、L,SI+BX-1 ;将有效地址内的内容送往DL MOV AH,02 ;2号功能输出 INT 21H DEC BX ;BX自动减1 JNZ DSL RET DISPLAY ENDPCODE ENDS END START2 分支程序设计实验接收键盘输入字符,将其中的小写字母转换为大写字母并显示。CODE SEGMENTMAIN PROC FAR ASSUME CS:CODESTART: MOV AH,00H INT 16H CMP AL,0DH JZ OVER CALL JUDGE MOV DL,AL MOV AH,02H INT 21H JMP STARTOVER: MOV AH,4CH IN

6、T 21HMAIN ENDPJUDGE PROC NEAR CMP AL,a JB STOP CMP AL,z JA STOP SUB AL,20HSTOP: RETJUDGE ENDPCODE ENDS END START3 循环程序设计实验统计一个有10人的班中,男、女生的人数各为多少。将男生人数存入变量MAN、女生人数存入变量WOMAN中。DATA SEGMENT MAN DB 0,0 WOMAN DB 0,0 STRING DB iuput people number! (man is 0, woman is 1 ) $ SM DB man is :$ SW DB woman is :

7、$DATA ENDSCODE SEGMENTMAIN PROC FAR ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AH,09H ;将STRING的内容输出 MOV DX,OFFSET STRING INT 21H CALL CRLF MOV CX,10 ;男女生总人数AA: MOV AH,01H ;从键盘输入,0为男,1为女 INT 21H CMP AL,30H ;与0比较 JNZ ADDW ;不为0,女生人数加1 INC MAN ;否则男生人数加1BB: LOOP AA JMP DISPLY ;打印ADDW: INC WOM

8、AN JMP BBDISPLY: CALL CRLF MOV AH,09H ;字符串输出 MOV DX,OFFSET SM INT 21H MOV AH,02H ;男生人数统计结果输出 MOV DL,MAN ADD DL,30H CALL JUDGE CALL CRLF MOV AH,09H ;字符串输出 MOV DX,OFFSET SW INT 21H MOV AH,02H ;女生人数统计结果输出 MOV DL,WOMAN ADD DL,30H CALL JUDGE MOV AH,4CH ;返回DOS INT 21HMAIN ENDPJUDGE PROC NEAR ;判断结果是否为39H C

9、MP DL,3AH JZ SHICC: INT 21H RETSHI: MOV DL,31H INT 21H MOV DL,30H JMP CCJUDGE ENDP CRLF PROC NEAR ;回车换行子程序 MOV AH,02H ;回车 MOV DL,0DH INT 21H MOV DL,0AH ;换行 INT 21H RETCRLF ENDPCODE ENDS END START4 子程序设计实验1 键盘输入字符,依次显示在行的最左端(即每接受一个字符,显示在屏幕上并回车换行。)2 对频繁使用的回车换行编写为子程序,在主程序中调用完成分行显示。CODE SEGMENTMAIN PROC

10、 FAR ASSUME CS:CODESTART: MOV CX,10 ;设置循环次数NEXT: MOV AH,01H ;从键盘输入一个字符 INT 21H CALL CRLF ;调用回车换行子程序 LOOP NEXT MOV AH,4CH ;返回DOS INT 21HMAIN ENDPCRLF PROC NEAR ;回车换行子程序 MOV AH,02H ;回车 MOV DL,0DH INT 21H MOV DL,0AH ;换行 INT 21H RETCRLF ENDPCODE ENDS END START5 码制转换程序实验 将ASC码数据转换成二进制数据。要求从键盘上输入十进制整数(假定范

11、围032767),然后转换成二进制格式存储。DATA SEGMENT STRING1 DB PLEASE INPUT A NUMBER(032767):$ STRING2 DB THE ASCII IS:$ STRING3 DB THE BINARY IS:$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FARSTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET STRING1 MOV AH,09H INT 21H CALL CRLFINPUT: MOV AH,01H ;输入数据 INT 21H CM

12、P AL,0DH JZ NEXT SUB AL,30H JL INPUT CMP AL,39H JG INPUT CBW XCHG AX,BX ;AX为输入值,BX保存结果,两个对调为MUL做准备 MOV DX,10D ;将上一次结果乘10 MUL DX XCHG AX,BX ;AX为本次输入的值,BX为之前的结果 ADD BX,AX JMP INPUTNEXT: CALL CRLF MOV CL,4D MOV CH,4D MOV DX,OFFSET STRING2 MOV AH,09H INT 21H CALL CRLFLOOP0: ROL BX,CL ;循环左移,将最高为存到BL的低四位

13、MOV AL,BL AND AL,0FH ; ADD AL,30H CMP AL,3AH JL OUTPUT ADD AL,07HOUTPUT:MOV AH,02H MOV DL,AL INT 21H DEC CH JNZ LOOP0 CALL CRLF MOV DX,OFFSET STRING3 MOV AH,09H INT 21H CALL CRLF MOV CH,16D MOV CL,1DLOOP1: ROL BX,CL MOV AL,BL AND AL,01H ADD AL,30H MOV AH,02H MOV DL,AL INT 21H DEC CH JNZ LOOP1 MOV AH

14、,4CH INT 21HMAIN ENDPOUTS PROC NEAR ;字符串输出子程序 MOV AH,09H INT 21H RETOUTS ENDPCRLF PROC NEAR ;回车换行子程序 MOV AH,02H ;回车 INT 21H MOV DL,0AH ;换行 INT 21H RETCRLF ENDPCODE ENDS END START6 两个数相乘的实验 实现十进制数的乘法,被乘数和乘数均以ASC码形式放在内存中,乘积在屏幕上显示出来。 DATA SEGMENT MBCS DW 0 MCS DW 0 RESULT DW 0 STRING1 DB THE BEICHENGSH

15、U IS:$ STRING2 DB THE CHENGSHU IS:$ STRING3 DB THE RESULT IS:$ STRING DB THE ASCII IS:$DATA ENDSCODE SEGMENTMAIN PROC FAR ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET STRING1 CALL OUTS CALL INPUT ;输入被乘数 MOV DX,OFFSET STRING CALL OUTS CALL CRLF CALL ASCII ;被乘数转化为ASCII码输出 CALL CRLF

16、 MOV MBCS,BX ;被乘数保存到MBCS中 MOV DX,OFFSET STRING2 CALL OUTS CALL INPUT ;输入乘数 MOV DX,OFFSET STRING CALL OUTS CALL CRLF CALL ASCII ;乘数转化为ASCII码输出 CALL CRLF MOV MCS,BX ;乘数保存到MCS中 MOV DX,OFFSET STRING3 CALL OUTS CALL CRLF MOV AX,MBCS ;被乘数 MUL BX ;乘数与被乘数相乘,结果高位DX,低位AX MOV RESULT,AX ;将AX中的内容保存到RESULT中 MOV B

17、X,DX ;将高位DX的值送给BX输出 CALL ASCII MOV BX,RESULT ;将低位AX的值送给BX输出 CALL ASCII MOV AH,4CH INT 21HMAIN ENDPINPUT PROC NEAR ;输入十进制数,将其转化为ASCII码存到BX中 CALL CRLF MOV BX,0AA: MOV AH,01H INT 21H CMP AL,0DH JZ STOP SUB AL,30H JL AA CMP AL,39H JG AA CBW XCHG AX,BX ;AX为输入值,BX保存结果,两个对调为MUL做准备 MOV DX,10D ;将上一次结果乘10 MUL

18、 DX XCHG AX,BX ;AX为本次输入的值,BX为之前的结果 ADD BX,AX JMP AASTOP: CALL CRLF RETINPUT ENDPASCII PROC NEAR MOV CL,4D MOV CH,4DCC: ROL BX,CL ;循环左移,将最高为存到BL的低四位 MOV AL,BL AND AL,0FH ; ADD AL,30H CMP AL,3AH JL BB ADD AL,07HBB: MOV AH,02H MOV DL,AL INT 21H DEC CH JNZ CC RETASCII ENDPOUTS PROC NEAR MOV AH,09H INT 2

19、1H RETOUTS ENDPCRLF PROC NEAR ;回车换行子程序 MOV AH,02H ;回车 MOV DL,0DH INT 21H MOV DL,0AH ;换行 INT 21H RETCRLF ENDPCODE ENDS END START7 从键盘输入数据并显示的程序编写程序将键盘接收到的四位十六进制数据转换为等值的二进制数,再显示在终端上。DATA SEGMENT STRING1 DB Please enter a four-digit hexadecimal number:$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN P

20、ROC FARSTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET STRING1 MOV AH,09H INT 21H CALL CRLF MOV CL,4DINPUT: MOV AH,01H INT 21H CMP AL,0 JB INPUT CMP AL,9 JA ZIMU SUB AL,30H JMP NEXTZIMU: CMP AL,A JB INPUT CMP AL,Z JA INPUT SUB AL,37HNEXT: CBW XCHG AX,BX MOV DX,16D MUL DX XCHG AX,BX ADD BX,AX LOOP INPUT CALL CRLF MOV CL,1D MOV CH,16DTO: ROL BX,1 MOV DL,BL AND DL,01H ADD DL,30H MOV AH,02H INT 21H DEC CH JNZ TO MOV AH,4CH INT 21HMAIN ENDPCRLF PROC NEAR ;回车换行子程序 MOV AH,02H ;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论