The MASM Forum Archive 2004 to 2012

Miscellaneous Forums => 16 bit DOS Programming => Topic started by: t48605 on May 16, 2006, 02:27:34 PM

Title: b -> c
Post by: t48605 on May 16, 2006, 02:27:34 PM
hi and there is a problem that I ' m meeting :
here is one of  examples that I see in emu8086

org 100h
mov ax , 0b800h
mov ds , ax
;make word " HELLO " appears
mov [52h] , ' H '
mov [54h] , ' E '
mov [56h] , ' L '
mov [58h] , ' L '
mov [60h] , ' O '
; ...

I change 0b800 to 0c800 and see nothing ???
anyone know why ???
Title: Re: b -> c
Post by: raymond on May 16, 2006, 02:39:06 PM
When your video mode is in the basic 320x200, the video memory is mapped in the B800 segment. If you write to the C800 segment, it would be outside the video memory.

Raymond
Title: Re: b -> c
Post by: Ossa on May 16, 2006, 02:44:20 PM
A list of the screen modes (with their video memory locations) is here: http://www.ctyme.com/intr/rb-0069.htm

Ossa
Title: Re: b -> c
Post by: MichaelW on May 16, 2006, 05:16:28 PM
t48605,

I'm curious as to what led you to think that segment address C800h would work. C800h at least used to be the default address for the SCSI BIOS, so on most systems there would be no physical RAM or ROM at this address. For the VGA the BIOS is at C000h, the alphanumeric display buffer at B800h, and the graphics display buffer at A000h.

Title: Re: b -> c
Post by: t48605 on May 18, 2006, 04:05:46 AM
so there is one data had been there , for example : c800:0052h but when I do mov [52h] , ' H ' what prevent that data at address c800:0052h can't be change to ' H ' ?
thanks !!!
Title: Re: b -> c
Post by: MichaelW on May 18, 2006, 04:38:14 AM
Assuming you are running under Windows, I would guess that Windows has mapped memory into that address range, and is blocking your attempts to write to the memory.