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