mirror of
https://github.com/ichmagmaus111/ghostgram.git
synced 2026-08-20 04:47:15 +02:00
54 lines
1.1 KiB
NASM
54 lines
1.1 KiB
NASM
keybuf equ 0040h:001Eh
|
|
|
|
absolute 5000h
|
|
label:
|
|
|
|
section .text
|
|
absval equ 1000h
|
|
|
|
org 0x100
|
|
; Using seg should yield the segment part.
|
|
mov ax, seg keybuf
|
|
mov ax, seg (0040h:001Eh) ; NASM doesn't understand this syntax
|
|
mov es, ax
|
|
|
|
; Use without seg should yield just the offset part.
|
|
mov bx, keybuf
|
|
;mov bx, 0040h:001Eh ; Illegal
|
|
|
|
; Each of the below pairs should be equivalent (and legal) in Yasm.
|
|
; There are some differences from NASM here!
|
|
|
|
; Defaults to near jump (on both NASM and Yasm)
|
|
jmp keybuf
|
|
|
|
; Direct far jump.
|
|
jmp 0040h:001Eh
|
|
|
|
; Force near (non-far) jump (just offset, no segment).
|
|
jmp near keybuf
|
|
jmp near 0040h:001Eh ; Illegal in NASM ("mismatch in operand sizes")
|
|
|
|
; A couple of jumps to "normal" absolute addresses.
|
|
jmp 0x1e
|
|
jmp 0
|
|
jmp absval
|
|
jmp label
|
|
|
|
; Non-absolute jump
|
|
label2:
|
|
jmp label2
|
|
|
|
; Non-relative access
|
|
mov ax, [0]
|
|
mov ax, [label]
|
|
|
|
; Direct far, explicitly.
|
|
jmp far keybuf ; Illegal in NASM ("value referenced by FAR is not relocatable")
|
|
jmp far 0040h:001Eh ; Illegal in NASM ("mismatch in operand sizes")
|
|
|
|
keybufptr:
|
|
dw keybuf ; offset part
|
|
dw seg keybuf ; segment part
|
|
|