I am required to write assembly code that stores what was written on the screen (in dosbox) in text mode ,clear the screen and then restores what was previously written ,so I wrote this code but it doesn't seem to work correctly..can anyone point why ? I will be really thankful
PS :I am still a noob
Here's my code :
Dataseg segment
    Data_seg dw 2000 dup(?)
Dataseg ends
Codeseg segment
Main PROC  far   
            assume ds:Dataseg,cs:Codeseg,ss:stackseg
        Mov ax,Data_seg
        Mov es,ax
        Mov ax,0b800h
        Mov ds,ax       
        Mov cx,25*80 ;(rows)*cols-default for screen
        Mov di,OFFSET Data_seg
        Mov si,0   
        CLD             ;autoincrement
        Rep movsw
        ;now clearing the screen
        Mov cx,25*80
        Mov ax,0b800h
        Mov es,ax
        Mov ax,0720h
        Mov di,0
        Rep stosw
        ;now restoring the contents of the screen
       Mov ax,Data_seg
       Mov ds,ax
       Mov cx,25*80
       Mov di,0
       Mov si,OFFSET Data_seg
       Rep movsw
     Mov Ah,4ch
     Int 21h
Main endp
Codeseg ends
     end Main
				
                        
You confused "Dataseg" (Name of a segment) and "Data_seg" (Name of a variable).
Mov ax,Data_segloads the offset of the VariableData_seg, not the segment. There are two options to load the segment:or