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,999 of 4,675    |
|    wolfgang kern to All    |
|    Re: Isn't this anomalous behavior? What     |
|    26 Dec 19 23:22:41    |
      From: nowhere@nospicedham.never.at              On 26.12.2019 11:21, bilsch01 wrote:       > 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              77BB is correct because of the above mov si,3       will need mov si,6 to see DD66 !       __       wolfgang       > ; 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