用mbr语言写下面程序 编写一个MBR程序,在计算机屏幕显示“zhouhe21210929”,并计算出上述字符的ASCII值的总和并以十进制形式显示出来。
时间: 2024-03-02 13:54:32 浏览: 22
下面是在mbr语言下编写的程序:
```
org 7c00h
start:
mov ax, 0b800h
mov es, ax
mov di, 0
mov cx, 15
mov si, text
cld
rep movsb
mov bx, 0
mov di, text
mov cx, 15
calc_sum:
lodsb
add bl, al
loop calc_sum
mov ah, 0
mov al, bl
mov bx, 10
div bx
add al, '0'
mov bh, 0
mov bl, 0x0f
int 10h
mov al, ah
add al, '0'
mov bh, 0
mov bl, 0x0f
int 10h
mov ax, 4c00h
int 21h
text db 'zhouhe21210929'
times 510-($-$$) db 0
dw 0xaa55
```
这个程序将字符串“zhouhe21210929”打印到屏幕上,并计算出其中所有字符的ASCII值的总和,最后以十进制形式显示出来。程序首先将屏幕显存的地址加载到es寄存器中,并使用字符串传送指令将字符串复制到显存中。然后,程序使用lodsb指令将字符串中的每个字符加载到累加器中,并将它们相加以计算总和。接着,程序将总和以十进制形式显示出来。最后,程序使用int 21h指令退出程序。
需要注意的是,由于mbr程序运行在实模式下,无法直接使用BIOS中断来进行屏幕输出。因此,程序使用int 10h指令来进行屏幕输出。