汇编语言 8086已知DATAX和DATAY单元各存放一个带符号字节数据,从键盘上接收加(+)、减(-)、乘(*)或除(/)符号,然后完成相应运算,把结果显示在屏幕上。
时间: 2023-12-03 12:46:43 浏览: 110
以下是汇编语言8086的代码实现:
```
.model small
.stack 100h
.data
DATAX db ?
DATAY db ?
RESULT db ?
MSG1 db 'Enter operator: $'
MSG2 db 'Result: $'
ADD db '+'
SUB db '-'
MUL db '*'
DIV db '/'
.code
main proc
mov ax, @data
mov ds, ax
; 输入DATAX和DATAY
mov ah, 01h ; 从键盘读入一个字符
int 21h ; 中断21h,等待用户输入
sub al, 30h ; 将字符转换为数字
mov DATAX, al ; 将数字存入DATAX
mov ah, 01h
int 21h
sub al, 30h
mov DATAY, al
; 输入运算符
mov ah, 09h ; 显示提示信息
lea dx, MSG1 ; 加载提示信息地址
int 21h ; 显示提示信息
mov ah, 01h ; 从键盘读入一个字符
int 21h ; 中断21h,等待用户输入
; 进行运算
cmp al, ADD ; 判断运算符
je add_op ; 如果是加号,跳转到add_op
cmp al, SUB
je sub_op
cmp al, MUL
je mul_op
cmp al, DIV
je div_op
; 如果输入的是无效运算符,直接结束程序
jmp exit
add_op:
mov al, DATAX ; 加法运算
add al, DATAY
mov RESULT, al
jmp display
sub_op:
mov al, DATAX ; 减法运算
sub al, DATAY
mov RESULT, al
jmp display
mul_op:
mov al, DATAX ; 乘法运算
mul DATAY
mov RESULT, al
jmp display
div_op:
mov al, DATAX ; 除法运算
mov bl, DATAY
div bl
mov RESULT, al
display:
; 显示结果
mov ah, 09h ; 显示提示信息
lea dx, MSG2 ; 加载提示信息地址
int 21h ; 显示提示信息
mov al, RESULT ; 将结果转换为字符
add al, 30h ; 加上30h
mov dl, al ; 将结果存入dl
mov ah, 02h ; 显示字符
int 21h ; 中断21h
exit:
mov ah, 4ch ; 结束程序
int 21h
main endp
end main
```
上述代码实现了从键盘上输入两个带符号字节数据DATAX和DATAY,然后输入加(+)、减(-)、乘(*)或除(/)符号,根据不同的运算符进行相应的运算,并将结果显示在屏幕上。
阅读全文