Reputation: 101
I'm trying to read the value 1000h which can be found in the address 0000h:044Ch and put it in the ax
register by using the mov
instruction. Every time I get back another value than the expected 1000h.
This is the instruction I use in TASM:
mov ax, [word ptr 0000h:044Ch]
I have checked the vaue in ax
in the debugger.
Upvotes: 2
Views: 383
Reputation: 47573
You will have to set one of the segment registers to 0x0000 and then access the word at offset 044ch through that segment register. Something like this should work:
xor ax, ax ; XOR register with itself same as setting register to 0
mov es, ax ; ES = 0
mov ax, [es:044ch] ; Get size of text video page of current display mode in bytes
; AX now has the 16-bit WORD value at 0000h:044ch
shr ax, 4 ; Divide by 16 to get size in paragraphs
add ax, 0b800h ; Add to the base of text video memory segment to get page 1 segment
; Then you can put AX in a segment like ES to access text video memory
mov es, ax ; ES = segment of page 1 of current text video mode
Upvotes: 4