您的位置:首页 > 编程语言

80x86汇编语言编程:三个数字进行比较

2016-01-25 12:01 225 查看
用汇编语言编写一个程序,从键盘接受三个10进制数(0到9,输入其它符号则输出错误提示)。

把三个数字进行比较,三个数都不相等显示0,三个数中有两个不相等显示1,三个数都相等显示2。

按照题目要求,做而论道编写的程序如下,已经调试成功:

ASSUME CS:CODE, DS:DATA

;------------------------------------------------------
DATA SEGMENT
    MSG1     DB  10, 13, ' INPUT (0 ~ 9): ', '$'
    ERR_TIP  DB  10, 13, ' INPUT  ERROR .', 10, 13, '$'
    I_BUFF   DB  ?, ?, ? 
    O_MSG    DB  10, 13, 10, 13, ' THE OUT IS: '
    O_BUFF   DB  ?, 10, 13, '$'
DATA ENDS
;------------------------------------------------------
CODE SEGMENT
BEGIN:
    MOV   AX, DATA
    MOV   DS, AX
    LEA   BX, I_BUFF
    MOV   CX, 3    ;输入三次
LOP:
    LEA   DX, MSG1
    MOV   AH, 9
    INT   21H
    MOV   AH, 1
    INT   21H
    CMP   AL, '0'
    JB    EEE
    CMP   AL, '9'
    JA    EEE
    MOV   [BX], AL
    INC   BX
    LOOP  LOP
    JMP   PROG    ;输入结束,转去比较
EEE:
    LEA   DX, ERR_TIP
    MOV   AH, 9
    INT   21H
    JMP   LOP
;------------------------------------------------------

;三个数都不相等显示0;
;三个数中有两个不相等显示1;
;三个数都相等显示2。

PROG:
    LEA   BX, I_BUFF
    MOV   AL, [BX + 0]
    CMP   AL, [BX + 1]
    JZ    EQU_0_1
    CMP   AL, [BX + 2]
    JZ    EQU_0_2
    MOV   AL, [BX + 1]
    CMP   AL, [BX + 2]
    JZ    EQU_1_2
N_EQU:
    MOV   O_BUFF, '0'
    JMP   DISP
;----------------------
EQU_0_1:
    CMP   AL, [BX + 2]
    JZ    ALL_EQU
    MOV   AL, [BX + 1]
    CMP   AL, [BX + 2]
    JZ    ALL_EQU
;----------------------
EQU_0_2:
EQU_1_2:
    MOV   O_BUFF, '1'
    JMP   DISP
;----------------------
ALL_EQU:
    MOV   O_BUFF, '2'
DISP:                           ;比较结束,下面是显示结果
    LEA   DX, O_MSG
    MOV   AH, 9
    INT   21H
;----------------------
    MOV   AH, 4CH
    INT   21H
CODE ENDS
    END   BEGIN
;------------------------------------------------------

程序经过编译、连接后,执行时,显示如下:

c:\masm510>NNN

 INPUT (0 ~ 9): 3
 INPUT (0 ~ 9): 3
 INPUT (0 ~ 9): 3

 THE OUT IS: 2

c:\masm510>NNN

 INPUT (0 ~ 9): 3
 INPUT (0 ~ 9): 5
 INPUT (0 ~ 9): 6

 THE OUT IS: 0

c:\masm510>NNN

 INPUT (0 ~ 9): 3
 INPUT (0 ~ 9): 6
 INPUT (0 ~ 9): 3

 THE OUT IS: 1

c:\masm510>NNN

 INPUT (0 ~ 9): 5
 INPUT (0 ~ 9): 8
 INPUT (0 ~ 9): 8

 THE OUT IS: 1

c:\masm510>NNN

 INPUT (0 ~ 9): 2
 INPUT (0 ~ 9): 2
 INPUT (0 ~ 9): 0

 THE OUT IS: 1

c:\masm510>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: