home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.asm.x86      Ahh, the lost art of x86 assembly      4,675 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 3,996 of 4,675   
   bilsch01 to All   
   Isn't this anomalous behavior? What can    
   26 Dec 19 02:21:38   
   
   From: king621@nospicedham.comcast.net   
      
   The code below writes 5 words to memory at 0x37000. I verified the words   
   are there using code not shown (for simplicity), but it's easy to see   
   that the words should be there. After that the 2 lines:   
      
      
   mov si,3   
   mov ax,word[fs:si]   
      
   should put dd66 in ax register but instead it puts a byte from each of 2   
   other words in ax, specifically 77bb. The routine at the end prints the   
   result 77BB when it should print DD66.   
      
   I have a situation where I really need something like this to work. How   
   can I do it?   TIA.   Bill S.   
      
   bits 16   
   org 0x0000   
      
   SECTION  .data   
      
   fat5 dw 0xaa99,0xbb88,0xcc77,0xdd66,0xee55,0xff44   
      
   SECTION  .text   
      
   push 0   
   pop ss   
   mov sp,0x7aff   
   push 0x1000   
   pop ds   
   push 0xb800   
   pop es   
      
    write 5 words to mem at 0x37000   
      
   push 0x3700   
   pop fs   
   mov di,0   
   mov si,fat5   
   mov cx,5   
      
   fatlu:   
   mov ax,word[ds:si]   
   mov word[fs:di],ax   
   add si,2   
   add di,2   
   loop fatlu   
      
    here's the test   
      
   mov si,3   
   mov ax,word[fs:si]   
      
   push ax   
   jmp vuhex    ;prints 77BB should be DD66   
      
      
    prints 4 hex digits in l.r. corner   
      
   vuhex:   
   pop ax   
   mov di,3832   
   mov cx,4   
      
   vh01:   
   rol ax,4   
   push ax   
   and al,0x0f   
   add al,'0'   
   cmp al,'9'   
   jbe vh02   
   add al,0x7   
      
   vh02:   
   mov byte[es:di],al   
   inc di   
   mov byte[es:di],0x0f   
   inc di   
   pop ax   
   loop vh01   
      
   jmp $   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca