emu8086利用DOS调用显示A到Z26个字母
时间: 2023-10-03 22:04:12 浏览: 65
在emu8086中,可以使用DOS中断调用来显示A到Z 26个字母。下面是一个简单的示例代码:
```
org 100h
mov ah, 02h ; 设置光标位置
mov bh, 0h ; 页码
mov dh, 10 ; 行
mov dl, 20 ; 列
int 10h
mov ah, 09h ; 显示字符串
mov dx, offset message ; 字符串地址
int 21h
mov ah, 4ch ; 退出程序
int 21h
message db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ$'
```
在这个程序中,使用了`int 10h`和`int 21h`两个DOS中断来设置光标位置和显示字符串。首先使用`int 10h`来设置光标位置,然后使用`int 21h`来显示字符串。注意,在字符串末尾加上了一个"$"字符,这是为了告诉DOS中断停止显示字符串。最后使用`int 21h`退出程序。
相关问题
在EMU8086上分别利用2号和9号DOS调用,实现26个字母A-Z的输出显示
2号DOS调用是显示字符的功能,9号DOS调用是向控制台输出字符串的功能。下面是利用这两个DOS调用在EMU8086上实现26个字母A-Z的输出显示的汇编程序:
```
org 100h
;显示字符函数
display_char:
mov ah, 2h ;2号DOS调用,显示字符
mov dl, al ;将要显示的字符存入dl寄存器
int 21h ;调用DOS中断
ret
;输出字符串函数
output_string:
mov ah, 9h ;9号DOS调用,输出字符串
mov dx, offset message ;将字符串地址存入dx寄存器
int 21h ;调用DOS中断
ret
message db "ABCDEFGHIJKLMNOPQRSTUVWXYZ$"
start:
mov cx, 26 ;循环26次
mov si, 0 ;从字符串的第一个字符开始
loop1:
mov al, [message+si] ;将字符存入al寄存器
call display_char ;显示字符
inc si ;指向下一个字符
loop loop1 ;循环
mov ah, 4ch ;DOS退出程序功能
int 21h ;调用DOS中断
```
程序中定义了两个函数,一个用于显示单个字符,一个用于输出字符串。在程序开始处定义了一个包含所有字母和终止符的字符串。在主程序中,利用循环遍历字符串中的每个字符,依次调用显示字符函数进行显示。最后使用DOS退出程序功能退出程序。
emu8086编写程序实现两位十进制数相加,并将十进制的和通过DOS调用显示输出
下面是使用emu8086汇编语言编写的程序,实现两位十进制数相加并输出结果:
```
.model small
.stack 100h
.data
num1 db 0ah ; 第一个数
num2 db 0bh ; 第二个数
sum db ? ; 两数之和
.code
main proc
mov ax, @data ; 初始化数据段寄存器
mov ds, ax
mov al, num1 ; 将第一个数存储到 al 寄存器
add al, num2 ; 将第二个数加到 al 寄存器中
daa ; 将结果转换为十进制
mov sum, al ; 将结果存储到 sum 变量中
mov ah, 09h ; 调用 DOS 中断显示结果
mov dx, offset sum
int 21h
mov ah, 4ch ; 退出程序
int 21h
main endp
end main
```
在上面的程序中,我们首先将两个数 `0ah` 和 `0bh` 存储到 `num1` 和 `num2` 变量中。然后,我们将第一个数加载到 `al` 寄存器中,并使用 `add` 指令将第二个数加到 `al` 寄存器中。由于我们要输出的是十进制数的和,因此我们使用了 `daa` 指令将结果转换为十进制。最后,我们将结果存储到 `sum` 变量中,并使用 DOS 中断 `int 21h` 显示结果。