80x86汇编编程两题

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;1 用键盘输入两个一位十进制数,均为奇输出M、均为偶输出Q,否则输出T
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DATA SEGMENT

    MESG1  DB  13, 10, 'Input  n1: $' ;用于提示.
    MESG2  DB  13, 10, 'Input  n2: $' ;用于提示.
    MESG3  DB  13, 10, 'Result is: $' ;用于提示.
    MESG4  DB  13, 10, 'Error.     $' ;用于提示.
    N1  DB  ?

DATA ENDS
;
CODE SEGMENT
    ASSUME  CS:CODE, DS:DATA
START:
    MOV  AX, DATA
    MOV  DS, AX

    MOV  DX, OFFSET MESG1
    MOV  AH, 9         ;9号功能调用,显示提示.
    INT  21H
    MOV  AH, 1         ;1号功能调用,接收键盘输入.
    INT  21H
    CMP  AL, '0'
    JB   ERR
    CMP  AL, '9'
    JA   ERR
    MOV  N1,  AL

    MOV  DX, OFFSET MESG2
    MOV  AH, 9         ;9号功能调用,显示提示.
    INT  21H
    MOV  AH, 1         ;1号功能调用,接收键盘输入.
    INT  21H
    CMP  AL, '0'
    JB   ERR
    CMP  AL, '9'
    JA   ERR
    JMP  E_OR_O
ERR:
    MOV  DX, OFFSET MESG4
    MOV  AH, 9         ;9号功能调用,显示提示.
    INT  21H
    JMP  EXIT
E_OR_O:
;均为奇输出M均为偶输出Q否则输出T
    TEST AL, 1
    JZ   Y_E
    MOV  AH, N1
    TEST AH, 1
    JZ   ONE_E
    MOV  DL, 'M'
    JMP  OUT_CHAR
Y_E:
    MOV  AH, N1
    TEST AH, 1
    JZ   ALL_E
ONE_E:
    MOV  DL, 'T'
    JMP  OUT_CHAR
ALL_E:
    MOV  DL, 'Q'
OUT_CHAR:
    PUSH DX
    MOV  DX, OFFSET MESG3
    MOV  AH, 9         ;9号功能调用,显示提示.
    INT  21H
    POP  DX
    MOV  AH, 2         ;2号功能调用,显示结果.
    INT  21H
;----------------------------结束.
EXIT:
    MOV  AH, 4CH
    INT  21H
;============================
CODE  ENDS
    END  START

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;2 输入两个一位数,如第一个能被第二个整除,就显示商,否则显示余数
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DATA SEGMENT

    MESG1  DB  13, 10, 'Input  n1: $' ;用于提示.
    MESG2  DB  13, 10, 'Input  n2: $' ;用于提示.
    MESG3  DB  13, 10, 'Result is: $' ;用于提示.
    MESG4  DB  13, 10, 'Error.     $' ;用于提示.
    N1  DB  ?

DATA ENDS
;
CODE SEGMENT
    ASSUME  CS:CODE, DS:DATA
START:
    MOV  AX, DATA
    MOV  DS, AX

    MOV  DX, OFFSET MESG1
    MOV  AH, 9         ;9号功能调用,显示提示.
    INT  21H
    MOV  AH, 1         ;1号功能调用,接收键盘输入.
    INT  21H
    CMP  AL, '0'
    JB   ERR
    CMP  AL, '9'
    JA   ERR
    AND  AL, 15
    MOV  N1, AL

    MOV  DX, OFFSET MESG2
    MOV  AH, 9         ;9号功能调用,显示提示.
    INT  21H
    MOV  AH, 1         ;1号功能调用,接收键盘输入.
    INT  21H
    CMP  AL, '0'
    JB   ERR
    CMP  AL, '9'
    JA   ERR
    JMP  E_OR_O
ERR:
    MOV  DX, OFFSET MESG4
    MOV  AH, 9         ;9号功能调用,显示提示.
    INT  21H
    JMP  EXIT
E_OR_O:
第一个数能被第二个整除 显示商数  否则显示余数
    AND  AL, 15
    MOV  BL, AL
    MOV  AH, 0
    MOV  AL, N1
    DIV  BL
    AND  AH, AH
    JZ   DISP_SH
    ADD  AH, 48
    MOV  DL, AH
    JMP  OUT_CHAR
DISP_SH:
    ADD  AL, 48
    MOV  DL, AL
OUT_CHAR:
    PUSH DX
    MOV  DX, OFFSET MESG3
    MOV  AH, 9         ;9号功能调用,显示提示.
    INT  21H
    POP  DX
    MOV  AH, 2         ;2号功能调用,显示结果.
    INT  21H
;----------------------------结束.
EXIT:
    MOV  AH, 4CH
    INT  21H
;============================
CODE  ENDS
    END  START

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
原题网址:http://zhidao.baidu.com/question/382018263.html
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值