《汇编语言 程序.pdf》由会员分享,可在线阅读,更多相关《汇编语言 程序.pdf(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!1.判断是否是闰年程序 data segment ;定义数据段 infon db 0dh,0ah,Please input a year:$Y db 0dh,0ah,This is a leap year!$N db 0dh,0ah,This is not a leap year!$w dw 0 buf db 8 db?db 8 dup(?)data ends stack segment stack db 200 dup(0)stack ends code segment assume ds:data
2、,ss:stack,cs:code start:mov ax,data mov ds,ax lea dx,infon ;在屏幕上显示提示信息 mov ah,9 int 21h lea dx,buf ;从键盘输入年份字符串 mov ah,10 int 21h mov cl,buf+1 lea di,buf+2 call datacate call ifyears jc a1 lea dx,n mov ah,9 int 21h jmp exit a1:lea dx,y mov ah,9 int 21h exit:mov ah,4ch int 21h 欢迎您阅读并下载本文档,本文档来源于互联网,如有
3、侵权请联系删除!我们将竭诚为您提供优质的文档!datacate proc near;push cx;dec cx lea si,buf+2 tt1:inc si loop tt1 ;lea si,cxdi pop cx mov dh,30h mov bl,10 mov ax,1 l1:push ax sub byte ptr si,dh mul byte ptr si add w,ax pop ax mul bl dec si loop l1 ret datacate endp ifyears proc near push bx push cx push dx mov ax,w mov cx,
4、ax mov dx,0 mov bx,4 div bx cmp dx,0 jnz lab1 mov ax,cx mov bx,100 div bx cmp dx,0 jnz lab2 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!mov ax,cx mov bx,400 div bx cmp dx,0 jz lab2 lab1:clc jmp lab3 lab2:stc lab3:pop dx pop cx pop bx ret ifyears endp code ends end start 2.加减乘除四则运算 B_P EQU BYTE PT
5、R W_P EQU WORD PTR D_P EQU DWORD PTR CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H;主程序开始 NEWSTAR:JMP STAR EVEN NUM1 DW 0,0 NUM2 DW 0,0 NUM3 DW 0,0 JGV4 DW 0,0 YSF LABEL WORD YSF1 DB 0 YSF2 DB 0 JUV DB 0 UV DB 0;使 DS:SI 指向第一有效字符 OVERS LABEL NEAR CLD PUSH AX OVERS1:LODSB CMP AL,欢迎您阅读并下载本文档,本文档来源于互联网,如有
6、侵权请联系删除!我们将竭诚为您提供优质的文档!JZ OVERS1 CMP AL,9 JZ OVERS1 DEC SI CMP AL,13 POP AX RET;输出一个制表符 TAB LABEL NEAR MOV AL,9 JMP SHORT DISP;输出一个回车换行符 CRLF LABEL NEAR MOV AL,13 CALL DISP MOV AL,10;显示一个字符 DISP LABEL NEAR PUSH AX PUSH DX MOV AH,2 MOV DL,AL INT 21H POP DX POP AX RET;检查是否为运算符 ISYSF LABEL NEAR CLD LOD
7、SB CALL ISJJ JZ ISYSF1 CALL ISII JZ ISYSF1 DEC SI ISYSF1:RET;检查是否是加减运算 ISJJ LABEL NEAR CMP AL,+JZ ISYSF1 CMP AL,-RET;检查是否为乘除运算 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!ISII LABEL NEAR CMP AL,*JZ ISYSF1 CMP AL,/JZ ISYSF1 CMP AL,RET;数据输出;CX=10 十进制;CX=16 十六进制 DOUT LABEL NEAR PUSH AX PUSH BX PUSH
8、DX PUSH BP XOR BP,BP DOUT1:INC BP PUSH AX MOV AX,DX XOR DX,DX DIV CX MOV BX,AX POP AX DIV CX PUSH DX MOV DX,BX OR BX,AX JNZ DOUT1 DOUT2:POP AX ADD AL,0 CMP AL,9 JBE DOUT3 ADD AL,A-9-1 DOUT3:CALL DISP DEC BP JNZ DOUT2 POP BP POP DX POP BX POP AX RET 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!;输入数
9、据在 DX:AX 中返回;CX=0 数据为 10 进制;CX#0 数据为 16 进制 DATE LABEL NEAR PUSH BX PUSH BP PUSH DI XOR AX,AX XOR DX,DX DATE1:MOV DI,AX LODSB CMP AL,0 JB DATE7 CMP AL,9 JA DATE6 DATE2:AND AX,0FH SHL DI,1 RCL DX,1 MOV BX,DI MOV BP,DX SHL DI,1 RCL DX,1 SHL DI,1 RCL DX,1 JCXZ DATE3 SHL DI,1 RCL DX,1 Jmp short DATE4 DAT
10、E3:ADD DI,BX ADC DX,BP DATE4:ADD AX,DI ADC DX,0 JMP DATE1 DATE5:ADD AL,9 JMP DATE2 DATE6:JCXZ DATE7 CMP AL,A JB DATE7 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!CMP AL,F JBE DATE5 CMP AL,a JB DATE7 CMP AL,f JBE DATE5 DATE7:MOV AX,DI DEC SI OR DI,DX POP DI POP BP POP BX RET;数据 1 与数据 2 根据 YSF1 进行加
11、减运算 JSJJ LABEL NEAR MOV AX,NUM2 MOV DX,NUM2+2 CMP YSF1,+JZ JSJJ1 SUB NUM1,AX SBB NUM1+2,DX JMP SHORT JSJJ2 JSJJ1:ADD NUM1,AX ADC NUM1+2,DX JSJJ2:RET;数据 1 与数据 2 根据 YSF1 进行乘除运算 JSII1 LABEL NEAR MOV BX,OFFSET NUM1 JMP SHORT JSII2_1;数据 2 与数据 3 根据 YSF2 进行乘除运算 JSII2 LABEL NEAR MOV BX,OFFSET NUM2 JSII2_1:D
12、B 66H MOV AX,BX DB 66H MOV CX,BX+4 CMP YSF2,*JNZ JSII2_2 DB 66H IMUL CX 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!JMP SHORT JSII2_3 JSII2_2:DB 66H CWD DB 66H IDIV CX CMP YSF2,/JZ JSII2_3 DB 66H XCHG DX,AX JSII2_3:DB 66H MOV BX,AX RET;显示结果 XUJG LABEL NEAR MOV AX,JGV4 MOV DX,JGV4+2 MOV CX,10 CMP
13、UV,10 JZ XUJG0 MOV CX,16 XUJG0:TEST DX,8000H JZ XUJG1 CMP UV,10 JZ XUJG2 CALL DOUT XUJG2:NOT AX NOT DX ADD AX,1 ADC DX,0 PUSH AX CMP UV,10 JZ XUJG3 MOV AL,CALL DISP MOV AL,(CALL DISP XUJG3:MOV AL,-CALL DISP POP AX 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!CMP UV,10 JZ XUJG1 CALL DOUT MOV AL,)CA
14、LL DISP RET XUJG1:CALL DOUT RET;计算结果放入 DX:AX 中 JSJG LABEL NEAR CALL JSJJ MOV AX,NUM1 MOV DX,NUM1+2 RET;从 DS:SI 处取一个数据 LOADATE LABEL NEAR LODSB CMP AL,(JZ LOADATE1 DEC SI PUSH CX XOR CX,CX CMP UV,10 JZ LOADATE0 INC CX ;取 16 进制数 LOADATE0:CALL DATE ;取数据放入 DX:AX 中 POP CX RET LOADATE1:PUSH NUM1 ;保存数据 1 数
15、据 2 及运算符 PUSH NUM1+2 PUSH NUM2 PUSH NUM2+2 PUSH YSF INC JUV MOV JGV4,0 ;结果值清零 MOV JGV4+2,0;进行四则运算 SZYS LABEL NEAR CALL ISYSF ;首字符是运算符?JZ SZYS2 CALL LOADATE ;不是,取数并保存 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!MOV NUM1,AX MOV NUM1+2,DX SZYS1:XOR AX,AX ;数据 2 清零 MOV NUM2,AX MOV NUM2+2,AX CALL ISYSF
16、 ;下个是运算符?JZ SZYS3 JNZ SZYS6 SZYS2:PUSH AX MOV AX,JGV4 ;将结果作为数据 1 MOV NUM1,AX MOV AX,JGV4+2 MOV NUM1+2,AX POP AX SZYS3:MOV YSF1,AL MOV YSF2,AL CALL ISJJ ;是加减运算转 JZ SZYS4 CALL LOADATE ;取数据 2 MOV NUM2,AX MOV NUM2+2,DX CALL JSII1 ;数据 1 与数据 2 根据 YSF1 进行乘除运算 JMP SZYS1 ;结果保存在数据 1 中 SZYS4:CALL LOADATE ;取数据
17、2 并保存 MOV NUM2,AX MOV NUM2+2,DX SZYS4_1:CALL ISYSF JNZ SZYS6 CALL ISJJ ;运算符 2 是加减运算?JNZ SZYS5 ;不是转 PUSH AX CALL JSJJ ;数据 1 与数据 2 根据 YSF1 进行加减运算 POP AX ;结果保存在数据 1 中 MOV YSF1,AL ;保存新的运算符 JMP SZYS4 SZYS5:MOV YSF2,AL ;保存运算符 2 CALL LOADATE ;取数据 3 MOV NUM3,AX 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档
18、!MOV NUM3+2,DX CALL JSII2 ;数据 2 与数据 3 根据 YSF2 进行乘除运算 JMP SZYS4_1 ;结果保存在数据 2 中 SZYS6:MOV CL,AL CMP AL,13 JNZ SZYS9 SZYS7:CALL JSJG CMP JUV,0 JZ SZYS8 DEC JUV POP YSF POP NUM2+2 POP NUM2 POP NUM1+2 POP NUM1 RET SZYS8:CMP CL,)JZ SZYS10 MOV JGV4,AX MOV JGV4+2,DX JNZ SZYS12 SZYS9:CMP AL,)JNZ SZYS11 INC S
19、I JMP SZYS7 SZYS10:MOV NUM1,AX MOV NUM1+2,DX JMP SZYS1 SZYS11:STC RET SZYS12:CLC RET;数制处理 UVIL LABEL NEAR PUSH SI UVIL1:LODSB 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!CMP AL,JZ UVIL2 CMP AL,9 JZ UVIL2 CMP AL,13 JZ UVIL4 JNZ UVIL1 UVIL2:MOV BX,SI CALL OVERS JZ UVIL3 LODSW CALL OVERS POP SI JNZ
20、SZYS11 CMP AX,01 JNZ SZYS11 PUSH SI MOV UV,10 UVIL3:MOV AL,13 MOV BX-1,AL UVIL4:POP SI CLC RET;预置结果 YVJG LABEL NEAR MOV AH,52H INT 21H MOV AX,ES:BX-2 MOV DS,AX MOV AX,DS:0CH MOV CS:JGV4,AX MOV AX,DS:0EH MOV CS:JGV4+2,AX PUSH CS POP DS PUSH CS POP ES RET;保存结果 BCJG LABEL NEAR MOV AH,52H 欢迎您阅读并下载本文档,本文
21、档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!INT 21H MOV AX,ES:BX-2 MOV DS,AX MOV AX,CS:JGV4 MOV DS:0CH,AX MOV AX,CS:JGV4+2 MOV DS:0EH,AX PUSH CS POP DS PUSH CS POP ES RET STAR:MOV SI,81H CLD CALL OVERS JNZ STAR1 STAR0:MOV DX,OFFSET MESS1 JMP STAR4 STAR1:CALL YVJG CALL UVIL JB STAR0 MOV SAVESP,SP CALL SZYS MOV SP,SAVESP MOV DX,OFFSET MESS2 JB STAR4 CALL CRLF CALL XUJG CALL BCJG MOV DX,OFFSET MESS3 STAR4:MOV AH,9 INT 21H INT 20H SAVESP DW 0 MESS1 DB 13,10,Syntax:,13,10 DB JS 10,13,10,$MESS2 DB Error in expression!$MESS3 DB 13,10,$CODE ENDS END NEWSTAR
限制150内