用mbr语言写 编写一个MBR程序,在计算机屏幕显示自己的姓名拼音,拼音后紧跟学号,并计算出上述字符的ASCII值的总和并以十进制形式显示出来
时间: 2024-03-03 12:46:50 浏览: 109
下面是在mbr语言下编写的程序:
```
org 7c00h
start:
mov ax, 0b800h
mov es, ax
mov di, 0
mov cx, 18
mov si, name
cld
rep movsb
mov bx, 0
mov di, name
mov cx, 18
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
jmp $
name db 'ZhangYanqing 1204108017'
times 510-($-$$) db 0
dw 0xaa55
```
这个程序将姓名拼音“ZhangYanqing”和学号“1204108017”打印到计算机屏幕上,并计算出其中所有字符的ASCII值的总和,最后以十进制形式显示出来。程序首先将屏幕显存的地址加载到es寄存器中,并使用字符串传送指令将姓名拼音和学号复制到显存中。然后,程序使用lodsb指令将字符串中的每个字符加载到累加器中,并将它们相加以计算总和。接着,程序将总和以十进制形式显示出来。最后,程序使用jmp指令来无限循环,以保持程序不会退出。
需要注意的是,在mbr程序中,程序必须以0xaa55结尾,以表示这是一个引导扇区。因此,程序使用dw指令声明一个字(即两个字节)的数据,将0xaa55存储到这个位置。另外,由于学号的长度为10,需要将程序中的cx值从15改为18。
阅读全文