汇编8086 输入2个十进制数,空格分开,范围为11-19,85-99,回车以十进制输出第一个到第二个数之间(包含边界),能整除i+4的所有数,空格分开,有输入输出提示
时间: 2024-03-21 22:38:16 浏览: 24
好的,这是一个汇编8086的程序,用于输入两个十进制数,然后输出它们之间(包括边界)所有能被i+4整除的数。下面是程序代码:
```
.model small
.stack 100h
.data
num1 db ?
num2 db ?
i db 0
newline db 0ah, 0dh, '$'
.code
main proc
mov ax, @data
mov ds, ax
; 输入第一个数字
mov ah, 01h
int 21h
sub al, 30h ; 转换为数字
mov num1, al
; 输入空格
mov dl, ' '
mov ah, 02h
int 21h
; 输入第二个数字
mov ah, 01h
int 21h
sub al, 30h ; 转换为数字
mov num2, al
; 输出提示
lea dx, newline
mov ah, 09h
int 21h
; 循环输出所有能被i+4整除的数
mov i, num1
mov ah, 02h
loop1:
cmp i, num2
jg done
mov dl, i
mov bh, 0
mov bl, i
add bl, 4
mov cl, bl ; cl = i+4
div cl ; dx = remainder
cmp dx, 0
je output
inc i
jmp loop1
output:
mov dl, i
mov ah, 02h
int 21h
mov dl, ' '
int 21h
inc i
jmp loop1
done:
; 结束程序
mov ah, 4ch
int 21h
main endp
end main
```
在这个程序中,我们定义了三个变量:num1,num2和i,它们都是一个字节大小的。num1和num2用于存储输入的两个数字,i用于循环计数。我们还定义了一个newline字符串,它用于在输出中添加一个换行符。
程序的主体是一个循环,它从num1开始,一直到num2为止。在每次循环中,我们检查当前的i是否能被i+4整除,如果可以,就输出i。否则,我们就将i加1,再次循环。
注意,我们在循环中使用了除法指令div,它可以将一个16位数除以一个8位数,并将商存储在al中,余数存储在ah中。我们使用了dx寄存器来保存余数,以便在比较时使用。
最后,我们在程序结束时使用了int 21h指令,以结束程序并返回操作系统。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)