编写一个MBR程序,在计算机屏幕显示自己的姓名拼音,拼音后紧跟学号,并计算出上述字符的ASCII值的总和并以十进制形式显示出来。
时间: 2024-03-02 11:50:46 浏览: 132
汇编程序 输出ASCII码的字符二进制十进制十六进制
5星 · 资源好评率100%
以下是一个简单的MBR程序,用于在计算机屏幕上显示姓名拼音、学号和ASCII值总和:
```
org 0x7c00
start:
; 清屏
mov ah, 0x00
mov al, 0x03
int 0x10
; 显示姓名拼音
mov si, name
call print_string
; 显示学号
mov si, number
call print_string
; 计算ASCII值总和
mov si, name
mov bx, 0
sum_loop:
lodsb
add bx, ax
cmp al, 0
jnz sum_loop
mov si, number
number_loop:
lodsb
add bx, ax
cmp al, 0
jnz number_loop
; 显示ASCII值总和
mov ah, 0x0e
mov al, ' '
int 0x10
mov ax, bx
call print_number
; 无限循环
jmp $
; 打印字符串
print_string:
lodsb
cmp al, 0
jz print_done
mov ah, 0x0e
int 0x10
jmp print_string
print_done:
ret
; 打印数字
print_number:
push bx
push cx
mov cx, 10
mov bx, 0
div cx
add ax, 0x3030
mov dl, al
mov ah, 0x02
int 0x21
pop cx
pop bx
ret
name db 'Zhang San', 0
number db '2021000000', 0
times 510-($-$$) db 0
dw 0xaa55
```
在上述代码中,我们使用了两个字符串变量name和number,分别存储了姓名拼音和学号的字符串。程序首先清空屏幕,然后依次显示姓名拼音和学号。接着,我们使用一个循环计算出这些字符的ASCII值总和,并将结果以十进制形式显示在屏幕上。
为了显示字符串和数字,我们定义了两个函数print_string和print_number。print_string函数用于打印字符串,print_number函数用于打印数字。这两个函数都使用了汇编语言中的lodsb指令,用于逐个读取字符串和数字中的字符。
最后,我们使用了一个无限循环(jmp $)来使程序一直运行下去。这是因为在MBR程序中,程序执行完毕后会自动跳转到下一个引导扇区或操作系统内核,因此需要使用一个无限循环来避免程序结束。
请注意,这个程序并不是完整的MBR程序,它只是一个MBR程序的核心部分。如果你要将这个程序写入到实际的磁盘扇区中,你需要使用一些专业的工具来完成。
阅读全文