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,995 of 4,675    |
|    bilsch01 to All    |
|    Isn't this anomalous behavior? What can     |
|    26 Dec 19 01:44:16    |
      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 from stack              vuhex: pop ax ;4 hex digits        mov di,3832 ;l.r. corner        mov cx,4 ;;# of hex digits       vh01: rol ax,4 ;hi digit on right        push ax ;push rol'd ax        and al,0x0f ;;masks right digit        add al,'0' ;0 thru 9        cmp al,'9'        jbe vh02        add al,0x7 ;A thru F       vh02: mov byte[es:di],al        inc di        mov byte[es:di],0x0f ;blk/wht        inc di        pop ax ;pop rol'd 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