gpt4 book ai didi

assembly - 无需操作系统即可打印字符串

转载 作者:行者123 更新时间:2023-12-02 08:04:08 29 4
gpt4 key购买 nike

我有一个简单的 x86 汇编语言程序。它应该直接将字符串打印到视频内存,无需操作系统。

[bits 16]
[org 0x7c00]
mov ax, 0x3
int 0x10
sdl
mov ax, 0xb800
mov es,ax
mov si, msg
xor di, di
repnz movsw
jmp $
msg db 'Hello'
times 510 - ($ - $$) db 0
dw 0xaa55

但是这不起作用。你能帮我吗?

最佳答案

存在一些问题:

  1. 没有sdl这样的指令。

  2. 要复制数据,您应该使用 rep movsw,而不是 repnz movsw

  3. 您需要在rep movsw之前设置cx

  4. 您还需要在视频内存的每个其他字节中定义每个字符的颜色,无论是在要使用 rep movsw 复制的数据中,还是在复制循环内。下面的代码说明了这两个选项:

编辑:添加代码。

[bits 16][org 0x7c00]mov ax,3int 10hpush word 0xb800pop  espush cs    ; just in case, for bootloader code,pop  ds    ; needed for movsb xor di,dimov si,msgmov cx,msg_length_in_bytesone_color_copy_to_vram_loop:    movsb    mov al,0x0f    stosb    loop one_color_copy_to_vram_loopmov si,multicolor_msgmov cx,multicolor_msg_lengthrep movswjmp $msg db 'Hello'msg_length_in_bytes equ $-msgmulticolor_msg db ' ',0               db 'H',1               db 'e',2               db 'l',3               db 'l',4               db 'o',5               db ' ',0                db 'w',6               db 'i',7               db 't',8               db 'h',9               db ' ',0               db 'c',10               db 'o',11               db 'l',12               db 'o',13               db 'r',14               db '!',15multicolor_msg_length equ ($-multicolor_msg)/2

关于assembly - 无需操作系统即可打印字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15462807/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com