编写一个MBR程序,在计算机屏幕显示自己的姓名拼音,拼音后紧跟学号,并计算出上述字符的ASCII值的总和并以十进制形式显示出来。
时间: 2024-03-18 12:39:05 浏览: 34
汇编程序 输出ASCII码的字符二进制十进制十六进制
5星 · 资源好评率100%
好的,以下是一个简单的MBR程序,可以实现您的要求:
```assembly
org 7c00h
; 显示自己的姓名拼音
mov ah, 0x0e
mov al, 'Y'
int 10h
mov al, 'A'
int 10h
mov al, 'N'
int 10h
mov al, 'G'
int 10h
mov al, ' '
int 10h
mov al, 'W'
int 10h
mov al, 'A'
int 10h
mov al, 'N'
int 10h
mov al, 'G'
int 10h
mov al, ' '
int 10h
mov al, '1'
int 10h
mov al, '2'
int 10h
mov al, '3'
int 10h
mov al, '4'
int 10h
mov al, '5'
int 10h
mov al, '6'
int 10h
mov al, '7'
int 10h
mov al, '8'
int 10h
mov al, '9'
int 10h
mov al, '0'
int 10h
; 计算并显示ASCII值的总和
mov cx, 0
mov bx, 7c00h
add bx, 1
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov dl, byte [bx]
add cx, dx
inc bx
mov ah, 0x0e
mov al, ' '
int 10h
mov al, 'T'
int 10h
mov al, 'h'
int 10h
mov al, 'e'
int 10h
mov al, ' '
int 10h
mov al, 'A'
int 10h
mov al, 'S'
int 10h
mov al, 'C'
int 10h
mov al, 'I'
int 10h
mov al, 'I'
int 10h
mov al, ' '
int 10h
mov al, 'v'
int 10h
mov al, 'a'
int 10h
mov al, 'l'
int 10h
mov al, 'u'
int 10h
mov al, 'e'
int 10h
mov al, ' '
int 10h
mov al, 'i'
int 10h
mov al, 's'
int 10h
mov al, ':'
int 10h
mov ax, cx
call print_word
jmp $
; 16位数值转为ASCII码并显示
print_word:
push ax
mov bx, 10
xor cx, cx
lp:
xor dx, dx
div bx
push dx
inc cx
or ax, ax
jnz lp
mov ah, 0x0e
next:
pop dx
add dl, '0'
int 10h
loop next
pop ax
ret
times 510-($-$$) db 0
dw 0xaa55
```
解释一下代码:
这段程序使用了BIOS中断`int 10h`进行屏幕输出。在第一部分,程序依次输出了我的姓名拼音和学号。
在第二部分,程序使用了寄存器`cx`来存储ASCII值的总和,然后依次读取程序后面的每个字符,并将其ASCII值相加到`cx`寄存器中。最后,程序使用`print_word`函数将`cx`寄存器中的值转换为ASCII码并显示在屏幕上。
最后,程序使用`jmp $`来使程序无限循环,等待计算机重启或者其他的操作。
请注意,由于这是一个MBR程序,它将直接在计算机启动时运行,因此请确保在运行此程序之前备份您的计算机数据。
阅读全文