汇编小程序

来源:互联网 发布:淘宝林珊珊店铺头像 编辑:程序博客网 时间:2024/05/22 17:45

        • 简单判断
        • 比较大小
        • 两个个位数加和
        • 几个数相加
        •  

简单判断

题目要求:编写程序段从键盘接收一个字符,如是‘Y’,跳转至标号YES;如是‘N’,跳转至标号NO;如果输入的字符既不是‘Y’,又不是’N’,则等待重新输入。要求对输入的大写字母和小写字母同样的处理。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Copyright : SDUT;Author : JueChen;Data   : 2016-11-03;Description : 判断输入的字符;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DATA SEGMENT    SRT DB  100        DB  ?        DB  100 DUP(?)    TS  DB  'Please input a character!$'    HH  DB  0DH,0AH,'$'    WA  DB  'Input is not valid$'    YES DB  'Y$'    NO  DB  'N$'DATA ENDSSTACK SEGMENT STACK    DB 100 DUP(?)STACK ENDSCODE SEGMENT    ASSUME DS:DATA,CS:CODE,SS:STACK;Function Name  : OUTPUT 和 INPUT;Description    : 输出字符串和输出字符INPUT MACRO SR    LEA DX, SR    MOV AH, 0AH    INT 21H    ENDMOUTPUT MACRO SR    LEA DX, SR    MOV AH, 09H    INT 21H    ENDMMAIN PROC FAR    MOV AX, DATA    MOV DS, AX    NEXT:        OUTPUT TS        OUTPUT HH        INPUT SRT        CALL CHECK        CMP AX ,0        JNZ ED        OUTPUT WA        OUTPUT HH        JMP NEXT    ED:    CALL FINISH    RETMAIN ENDP;Function Name  : FINISH;Description    : 按任意键结束 FINISH PROC    MOV AH, 0    INT 16H    MOV AH,4CH    INT 21H    RETFINISH ENDP;Function Name  :CHECK;Description    :判断输入的字符是不是'Y','y','n','N',如果是则AX!=0,否则AX = 0CHECK PROC     MOV CL, SRT+1    MOV AX, 0    CMP CL, 1    JNZ  ISVALID    MOV DL, SRT+2    CMP DL, 'Y'    JZ ISYES    CMP DL, 'y'    JZ ISYES    CMP DL, 'N'    JZ ISNO    CMP DL, 'n'    JZ ISNO    ISVALID:        MOV AX,0        RET     ISNO :        OUTPUT NO        OUTPUT HH        MOV AX, 2        RET    ISYES:        OUTPUT YES        OUTPUT HH        MOV AX, 1         RET    RETCHECK ENDPCODE ENDS    END MAIN

比较大小

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Copyright : SDUT;Author : JueChen;Data   : 2016-11-06;Description : 比较两个个位数的大小,输出比较的结果;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DATA SEGMENT    HH  DB  0DH,0AH,'$'    TS  DB  'Please input two num!$' ;提示输入数字    WA  DB  0DH,0AH,'The input is not legal!$' ;提示输入部分不合法    GR  DB  0DH,0AH,'GREAT$'   ;第一个数大于第二个数    LESS    DB  0DH,0AH,'LESS$'    ;第一个数小于第二个数    EQE DB  0DH,0AH,'EQUAL$'   ;第一个数等于第二个数    NUM1    DB  100             ;第一个数的存储空间            DB  ?            DB  100 DUP(?)    NUM2    DB  100             ;第二个数的存储空间            DB  ?            DB  100 DUP(?)DATA ENDSSTACK SEGMENT STACK    DB  100 DUP(?)STACK ENDSCODE SEGMENT    ASSUME CS:CODE,DS:DATA,SS:STACK;Function Name  : OUTPUTSR , INPUTSR;Description    : 输出和输入字符串OUTPUTSR MACRO SR    LEA DX, SR    MOV AH, 09H    INT 21H    ENDMINPUTSR MACRO SR    LEA DX, SR    MOV AH, 0AH    INT 21H    ENDM;Function Name  : FINISH;Description    : 输出比较的结果,并按任意键结束FINISH MACRO SR    OUTPUTSR SR    OUTPUTSR HH    MOV AH, 0H    INT 16H    MOV AH, 4CH    INT 21H    ENDM MAIN PROC FAR    MOV AX, DATA    MOV DS, AX    LOOPINPUT:        OUTPUTSR TS             OUTPUTSR HH        INPUTSR NUM1        OUTPUTSR HH        INPUTSR NUM2        CALL CHECK         CMP AX, 1        JNZ ISTRUE          ;输入合法则输出判断的结果        OUTPUTSR WA        OUTPUTSR HH        JMP LOOPINPUT       ;输入不合法则继续输入    ISTRUE:        CMP DL,DH        JZ ISEQ        JG ISGR        JL ISLE        ISEQ:            FINISH EQE            RET        ISLE:            FINISH LESS            RET        ISGR:            FINISH GR            RET    RETMAIN ENDP;Function Name  : CHECK;Description    : 判断输入的数据是不是合法的数据;Return         : 合法:AX = 1,DL = NUM1,DH = NUM2,否则:AX = 0CHECK PROC    MOV AX, 0    MOV CX, 0    MOV DL, NUM1+1    CMP DL, 1    JNZ LEGAL    MOV DL, NUM2+1    CMP DL, 1    JNZ LEGAL    MOV DL, NUM1+2    MOV DH, NUM2+2    RET    LEGAL:        MOV AX,1    RETCHECK ENDPCODE ENDS    END MAIN

两个个位数加和

DATA    SEGMENT    TS  DB  0DH,0AH,'Please input the num!$'    HH  DB  0DH,0AH,'$'    WA  DB  0DH,0AH,'The input is not legal!$'    SUMN    DB  00H    NUM1    DB  100            DB  ?            DB  100 DUP(?)    NUM2    DB  100            DB  ?            DB  100 DUP(?)    MOOD    DB  0AH    SUM DB  0DH,0AH,'The sum is :$'DATA    ENDSSTACK   SEGMENT STACK    DB  100 DUP(?)STACK   ENDSCODE    SEGMENT    ASSUME  CS:CODE, DS:DATA, SS:STACKOUTPUTSR    MACRO   SR    LEA DX, SR    MOV AH, 09H    INT 21H    ENDMINPUTSR     MACRO   SR     LEA DX, SR    MOV AH, 0AH    INT 21H    ENDMOUTPUTCHAR  MACRO   CHA    MOV DL, CHA    MOV AH, 02H    INT 21H    ENDMOUTPUTNUM   MACRO   NU    LOCAL LOOPN    LOCAL NEXTP    MOV AL, NU    CBW    MOV CX, 0    LOOPN:        DIV MOOD        MOV BL,AH        ADD BL,'0'        XOR BH,BH        PUSH BX        INC CX        CBW        CMP AX, 0        JNZ LOOPN    NEXTP:        POP AX        OUTPUTCHAR AL        DEC CX        JNZ NEXTP    ENDMMAIN    PROC    FAR    MOV AX, DATA    MOV DS, AX    NEXT:        OUTPUTSR TS        OUTPUTSR HH        INPUTSR NUM1        OUTPUTSR HH        INPUTSR NUM2        CALL CHECK        CMP AX,0        JNZ NEXT    OUTPUTSR SUM    MOV AL, NUM1+2    SUB AL, '0'    ADD AL, NUM2+2    SUB AL, '0'    MOV SUMN, AL    OUTPUTNUM SUMN    OUTPUTSR HH    CALL FINISH    RETMAIN    ENDPCHECK   PROC    MOV AX, 0    MOV CL, NUM1+1    CMP CL, 1    JNZ ISWA    MOV CL, NUM2+1    CMP CL, 1    JNZ ISWA    MOV CL, NUM1+2    CMP CL, '0'    JL ISWA    CMP CL, '9'    JG  ISWA    MOV CL, NUM2+2    CMP CL, '0'    JL ISWA    CMP CL, '9'    JG  ISWA    RET    ISWA:        OUTPUTSR WA        MOV AX, 1    RETCHECK   ENDPFINISH  PROC    MOV AH,00H    INT 16H    MOV AH, 4CH    INT 21H    RETFINISH ENDPCODE    ENDS    END     MAIN

几个数相加

DATA    SEGMENT     BUFFER  DW  76,45,73,42,83,67    MIN     DW  0    SUM     DW  0    MOOD    DW  0AH    TSM     DB  'The min num is : $'    HH      DB  0DH,0AH,'$'    TSS     DB  'The sum is : $'DATA    ENDSSTACK   SEGMENT STACK    DB  100 DUP(?)STACK   ENDSCODE    SEGMENT    ASSUME DS:DATA,CS:CODE,SS:STACKOUTPUTSTR MACRO SR    LEA DX, SR    MOV AH, 09H    INT 21H    ENDMOUTPUTCHAR MACRO CHA    MOV DL,CHA    ADD DL,'0'    MOV AH, 02H    INT 21H    ENDMOUTPUTNUM   MACRO   NUM    LOCAL NEXT    LOCAL NEXTOUT    MOV AX,NUM    CWD    MOV CX, 0    NEXT:        DIV MOOD        PUSH DX        INC CX        CMP AX,0        JZ NEXTOUT        CWD        JMP NEXT    NEXTOUT:        POP DX        OUTPUTCHAR  DL        DEC CX        JNZ NEXTOUT    ENDMMAIN    PROC    MOV AX,DATA    MOV DS,AX    CALL GETMINSUM    OUTPUTSTR TSM    OUTPUTNUM MIN    OUTPUTSTR HH    OUTPUTSTR TSS    OUTPUTNUM SUM    OUTPUTSTR HH    CALL FINISH    RET MAIN    ENDPFINISH PROC    MOV AH,00H    INT 16H    MOV AH,4CH    INT 21H    RETFINISH ENDPGETMINSUM PROC    LEA SI, BUFFER    MOV CX, 06H    NEXTT:        MOV DX, [SI]        MOV AX, SUM        ADD AX, DX        MOV SUM,AX        CMP DX,MIN        JL ISMIN            MOV MIN,DX        ISMIN:            INC SI            INC SI            DEC CX        JNZ NEXTT    JNZ NEXTT    RETGETMINSUM ENDPCODE    ENDS    END     MAIN

 

1 0
原创粉丝点击