Îïåðàöèÿ - ÷àñòü 2
*** 0000lf 75 03 e9 00 00 je L00180
; dest[index]=data;
; Line 16
*** 000024 8b 46 fa mov ax,WORD PTR -6[bp]
*** 000027 8b 4e fc mov ex,WORD PTR -4[bp]
*** 00002a 8b Ie 00 00 mov bx,WORD PTR _dest
*** 00002e 03 d9 add bx,cx
*** 000030 88 07 mov BYTE PTR [bx],al ;
} // end main
; Line 18
L00180;
; Line 18
L00177:
*** 000032 5f pop di
*** 000033 5e pop si
*** 000034 c9 leave
*** 000035 cb
ret OFFSET 0 Local Size: 6 ; Line 0
Ëèñòèíã 7.2. Äèçàññåìáäèðîâàíèå ëîãè÷åñêîé îïåðàöèè OR.
; File or.ñ
; #include <stdio.h> ;
; char far *source, *dest; // îáëàñòè
èñõîäíûõ
// è ðåçóëüòèðóþùèõ äàííûõ
;
; main()
; {
; Line 8
_main:
*** 000000 c8 00 00 00 enter OFFSET L00180,OFFSET 0
*** 000004 56 push si
*** 000005 57 push di ; index = fffc ;data = fffa
;int index;
;Line 10 ;unsigned data;
;Line 11
// ëîãè÷åñêèé îïåðàòîð (OR)
dest[index]=data | source[index];
; Line 15
*** 000006 8b 46 fc mov ax,WORD PTR -4 [bp]
*** 000009 8b Ie 00 00 mov bx,WORD PTR _source
*** 00000d 8b 0e 02 00 mov ex,WORD PTR _source+2
*** 000011 03 d8 add bx,ax
*** 000013 8e c1 mov es,cx
*** 000015 26 8a 07 mov al,BYTE PTR es:[bx]
*** 000018 98 cbw
*** 000019 0b 46 fa or ax,WORD PTR -6[bp]
*** OOOOlc 8b 4e fc mov ax,WORD PTR -4[bp}
*** OOOOlf 8b Ie 00 00 mov bx,WORD PTR _dest
*** 000023 03 d9 add bx,cx
*** 000025 88 07 mov BYTE PTR [bx] , al
*** 000027 8b 4e fc mov ex,WORD PTR -4[bp]
*** 00002a 8b Ie 00 00 mov bx,WORD PTR _dest
*** 00002e 03 d9 add bx,cx
*** 000030 88 07 mov BYTE PTR [bx],al
;
; } // end main
; Line 17
; Line 17
L00177:
*** 000032 5f pop di
*** 000033 5e pop si
