【发布时间】:2021-03-27 07:47:36
【问题描述】:
我正在尝试通过其内存地址将一些字符发送到文本模式的第 1 页,但我没有找到合适的结果,我计算了第 1 页的地址,如“0B800h + 1000h = 0C800h”。
这是我的代码:
IDEAL
MODEL small
STACK 256
DATASEG
exCode DB 0
x_var db 219
CODESEG
Start:
mov ax, @data ; Initialize DS to address
mov ds, ax ; of data segment
; Page 1
mov ax, 0501h
int 10h
;Page 1 buffer -> es
mov ax, 0C800h
mov es, ax
mov si, offset x_var
mov di, (10*80*2)+(10*2)
cld
lodsb
stosb
; wait for any key press:
mov ah, 0
int 16h
;Page 0 again
mov ax, 0500h
int 10h
Exit:
mov ah, 04Ch ; DOS function: Exit program
mov al, [exCode] ; Return exit code value
int 21h ; Call DOS. Terminate program
END Start ; End of program / entry point
【问题讨论】:
标签: assembly dos x86-16 bios tasm