📄 posxy.asm
字号:
;
; Tasm module, Call from C
;
; pos_xy( int x, int y );
;
; Written by Craig Allsop, Public Domain.
; Assumes 16 colour mode, and screen width of 640 pixels.
;
; I only typed this from memory, but it should work.
;
ideal
model small,c
codeseg
proc pos_xy
arg x:word, y:word
mov ax,[y]
mov bl,80 ; width of screen / 8 (bytes)
mul bl
mov bx,[x]
mov cl,bl
shr bx,3 ; Convert to bytes from pixels
add bx,ax
and cl,7 ; Keep pixel offset
mov dx,3d4h
mov ah,0ch
mov al,bh
out dx,al ; Set high order of address
mov ah,0dh
mov al,bl
out dx,al ; Set low order of address
mov dh,0dah
in al,dx
mov dh,0c0h
mov al,33h ; Register 13 OR 20
out dx,al
mov al,cl
out dx,al ; Output pixel panning offset
ret
endp
end pos_xy
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -