80x86 汇编语言编程:要求显示完整的算式
2016-01-25 12:12
239 查看
从键盘输入两个2位十六进制数,相加,
结果以十进制形式显示在屏幕上。(要求结果显示完整的算式)
题目链接:http://zhidao.baidu.com/question/983257464781691619.html
做而论道编程如下:
;=================================
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
MSG1 DB 13, 10, 'Please input number_1: $'
MSG2 DB 13, 10, 'Please input number_2: $'
CRLF DB 13, 10, '$'
NN DB ?, ?
MM DB ?
DATA ENDS
;---------------------------------
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
;-----------------------
LEA DX, MSG1
MOV AH, 9
INT 21H
CALL IN_CHAR
MOV MM, AL
LEA DX, MSG2
MOV AH, 9
INT 21H
CALL IN_CHAR
MOV NN, AL
LEA DX, CRLF
MOV AH, 9
INT 21H
MOV AL, MM
CALL OUT_NUM
MOV DL, '+'
MOV AH, 2
INT 21H
MOV AL, NN
CALL OUT_NUM
MOV DL, '='
MOV AH, 2
INT 21H
MOV AL, NN
ADD AL, MM
MOV AH, 0
ADC AH, 0
CALL OUT_1
EXIT:
MOV AH, 4CH
INT 21H ;返回DOS
;---------------------------------
IN_CHAR:
LEA BX, NN
MOV CX, 2
IN_1:
MOV AH, 1
INT 21H
CMP AL, '0'
JB IN_1
CMP AL, 'F'
JA IN_1
CMP AL, '9'
JBE _09
CMP AL, 'A'
JB IN_1
SUB AL, 7
_09:
SUB AL, 30H
MOV [BX], AL
INC BX
LOOP IN_1
XCHG AL, NN
MOV BL, 16
MUL BL
ADD AL, NN
RET
;---------------------------------
OUT_NUM:
MOV AH, 0
OUT_1:
MOV DX, 0
MOV BX, 100
DIV BX
XCHG AX, DX
CALL OUT_CHAR
MOV DX, 0
MOV BX, 10
DIV BX
XCHG AX, DX
CALL OUT_CHAR
MOV DL, AL
CALL OUT_CHAR
RET
;---------------------------------
OUT_CHAR:
PUSH AX
ADD DL, 30H
MOV AH, 2
INT 21H
POP AX
RET
;---------------------------------
CODE ENDS
END START
;=================================
提问者评价:太给力了,你的回答完美的解决了我的问题 !
结果以十进制形式显示在屏幕上。(要求结果显示完整的算式)
题目链接:http://zhidao.baidu.com/question/983257464781691619.html
做而论道编程如下:
;=================================
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
MSG1 DB 13, 10, 'Please input number_1: $'
MSG2 DB 13, 10, 'Please input number_2: $'
CRLF DB 13, 10, '$'
NN DB ?, ?
MM DB ?
DATA ENDS
;---------------------------------
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
;-----------------------
LEA DX, MSG1
MOV AH, 9
INT 21H
CALL IN_CHAR
MOV MM, AL
LEA DX, MSG2
MOV AH, 9
INT 21H
CALL IN_CHAR
MOV NN, AL
LEA DX, CRLF
MOV AH, 9
INT 21H
MOV AL, MM
CALL OUT_NUM
MOV DL, '+'
MOV AH, 2
INT 21H
MOV AL, NN
CALL OUT_NUM
MOV DL, '='
MOV AH, 2
INT 21H
MOV AL, NN
ADD AL, MM
MOV AH, 0
ADC AH, 0
CALL OUT_1
EXIT:
MOV AH, 4CH
INT 21H ;返回DOS
;---------------------------------
IN_CHAR:
LEA BX, NN
MOV CX, 2
IN_1:
MOV AH, 1
INT 21H
CMP AL, '0'
JB IN_1
CMP AL, 'F'
JA IN_1
CMP AL, '9'
JBE _09
CMP AL, 'A'
JB IN_1
SUB AL, 7
_09:
SUB AL, 30H
MOV [BX], AL
INC BX
LOOP IN_1
XCHG AL, NN
MOV BL, 16
MUL BL
ADD AL, NN
RET
;---------------------------------
OUT_NUM:
MOV AH, 0
OUT_1:
MOV DX, 0
MOV BX, 100
DIV BX
XCHG AX, DX
CALL OUT_CHAR
MOV DX, 0
MOV BX, 10
DIV BX
XCHG AX, DX
CALL OUT_CHAR
MOV DL, AL
CALL OUT_CHAR
RET
;---------------------------------
OUT_CHAR:
PUSH AX
ADD DL, 30H
MOV AH, 2
INT 21H
POP AX
RET
;---------------------------------
CODE ENDS
END START
;=================================
提问者评价:太给力了,你的回答完美的解决了我的问题 !
相关文章推荐
- C语言:500 以内最大 10 个素数并求和
- 80x86 汇编语言编程:显示一个螺旋数据方阵
- 51单片机编程:双机串行通信
- 80x86 汇编语言编程:斐波那契数列--大数处理
- 51单片机定时器编程:这么简单的要求,不用大动干戈
- 80x86 汇编语言编程:输出指定行数的星号
- Java并发编程:Callable、Future和FutureTask
- 如何在代码中为组件设置dip,sp值
- 51 汇编编程:8255 驱动矩阵键盘和数码管
- 51单片机汇编编程--16位流水灯收缩点亮
- 51单片机 C 语言编程:单片机定时中断
- 51单片机汇编编程--16位拉幕灯
- C语言编写51单片机程序:键控流水灯
- c++学习之继承篇(多重继承之虚继承)
- 80x86 汇编语言编程:斐波那契数列
- 51单片机 C语言电子琴
- 80x86汇编编程:显示数据区字符串中第一个空格的位置
- 80x86 汇编代码,在屏幕上显示汉字
- 80x86 汇编语言编程:排序与显示
- MyEclipse开发WebService教程