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>
把三个数字进行比较,三个数都不相等显示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>
相关文章推荐
- C编程中阻止程序退出的方法
- 80x86汇编语言编程:在屏幕上显示彩色 ASCII 码
- Matlab入门学习(矩阵、函数、绘图的基本使用)
- 80x86汇编语言编程:在屏幕上模拟升旗的过程
- 80x86汇编语言编程:排序与显示
- 80x86汇编语言编程:求 10000 以内的《完数》
- 80x86汇编语言编程:输入格雷码、输出对应的十进制数字
- 一个 51 单片机的编程题
- 80x86 汇编语言:编程一题
- 80x86汇编语言编程:按下任意键,以二进制和16进制输出该键所对应的 ASCII 码
- ;单片机汇编语言编程:汽车转向灯控制器
- 80x86汇编编程:把一串字符从键盘输入,然后逆序输出
- PHP+apc+ajax实现的ajax_upload上传进度条代码
- 8086汇编语言编程--大小写转换、统计个数、显示时还要求发音
- C语言编程:统计输入的各字符的个数
- C语言编程:扑克牌魔术
- 80x86汇编编程:键入两个8进制数字,相加后以16进制输出
- Python -- collection 系列
- 80x86汇编编程:在输入的字符串中查找关键字
- 80x86汇编编程:实现十进制或十六进制向二进制的转换