1.熟悉emu8086仿真系统 2.实现控制台输入输出 3.设计并单步调,试实现一位十进制数的加法运算(屏幕效果为3+2=5,红色为输入其他为自动输出)实现两位十进制和的输出
时间: 2023-06-16 19:07:25 浏览: 117
输入输出实验
好的,下面是实现的步骤:
1. 打开emu8086仿真系统,创建一个新的程序。
2. 在程序中添加下面的代码实现控制台输入输出:
```
org 100h
section .data
msg db '请输入第一个数:$'
len1 equ $-msg
msg2 db '请输入第二个数:$'
len2 equ $-msg2
res db '结果为:$'
len3 equ $-res
space db ' $'
len4 equ $-space
newline db 0DH,0AH,'$'
section .bss
num1 resb 2
num2 resb 2
sum resb 3
section .text
mov ah, 9
mov dx, msg
mov cx, len1
int 21h
mov ah, 0Ah
mov dx, num1
int 21h
mov ah, 9
mov dx, msg2
mov cx, len2
int 21h
mov ah, 0Ah
mov dx, num2
int 21h
mov al, [num1]
sub al, 30h
mov bl, [num2]
sub bl, 30h
add al, bl
mov cl, al
add cl, 30h
mov [sum], cl
mov ah, 9
mov dx, res
mov cx, len3
int 21h
mov ah, 9
mov dx, sum
mov cx, 3
int 21h
mov ah, 9
mov dx, space
mov cx, len4
int 21h
mov ah, 9
mov dx, newline
int 21h
mov ah, 4Ch
int 21h
```
3. 运行程序,可以看到控制台输出“请输入第一个数:”,输入一个一位十进制数后,再输出“请输入第二个数:”,输入另一个一位十进制数。程序会将这两个数相加并输出结果。
4. 如果要实现两位十进制数的加法,可以修改代码中的num1和num2为resb 3,同时修改输入和输出的部分,具体代码如下:
```
org 100h
section .data
msg db '请输入第一个数:$'
len1 equ $-msg
msg2 db '请输入第二个数:$'
len2 equ $-msg2
res db '结果为:$'
len3 equ $-res
space db ' $'
len4 equ $-space
newline db 0DH,0AH,'$'
section .bss
num1 resb 3
num2 resb 3
sum resb 4
section .text
mov ah, 9
mov dx, msg
mov cx, len1
int 21h
mov ah, 0Ah
mov dx, num1
int 21h
mov ah, 9
mov dx, msg2
mov cx, len2
int 21h
mov ah, 0Ah
mov dx, num2
int 21h
mov al, [num1+1]
sub al, 30h
mov bl, [num2+1]
sub bl, 30h
add al, bl
mov cl, al
add cl, 30h
mov [sum+2], cl
mov al, [num1]
sub al, 30h
mov bl, [num2]
sub bl, 30h
add al, bl
mov cl, al
add cl, 30h
mov [sum+1], cl
mov ah, 9
mov dx, res
mov cx, len3
int 21h
mov ah, 9
mov dx, sum
mov cx, 4
int 21h
mov ah, 9
mov dx, space
mov cx, len4
int 21h
mov ah, 9
mov dx, newline
int 21h
mov ah, 4Ch
int 21h
```
运行程序,输入两个两位十进制数,程序会将它们相加并输出结果。
阅读全文