186 (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Sot 18 августа 2004 г. 16:53
В ответ на: Пожалуйста, откомпилируйте кто чем может( С для МК ) файл по ссылке и покажите листинг, в картинке листинг для HT-PICC отправлено patton 18 августа 2004 г. 13:13

Турбо С v2.01

Исходник:


short test( char* src )
{
short result = *( short* )src;
return result;
}


short badtest( char* packet )
{
short result = packet[0] | (((signed char)packet[1])<<8);
return result;
}


void main()
{
char buf[ 2 ];
short result, badresult;
*(short*)buf = 0x1234;
while( 1 )
{
result = test( buf );
badresult = badtest( buf );
if( result != badresult )
break;
}
error:
goto error;
}


asm-файл:

.186
ifndef ??version
?debug macro
endm
endif
?debug S "main.c"
_TEXT segment byte public 'CODE'
DGROUP group _DATA,_BSS
assume cs:_TEXT,ds:DGROUP,ss:DGROUP
_TEXT ends
_DATA segment word public 'DATA'
d@ label byte
d@w label word
_DATA ends
_BSS segment word public 'BSS'
b@ label byte
b@w label word
?debug C E9D0831231066D61696E2E63
_BSS ends
_TEXT segment byte public 'CODE'
; ?debug L 1
_test proc near
push bp
mov bp,sp
sub sp,2
; ?debug L 3
mov bx,word ptr [bp+4]
mov ax,word ptr [bx]
mov word ptr [bp-2],ax
; ?debug L 4
; ?debug L 5
leave
ret
_test endp
; ?debug L 8
_badtest proc near
push bp
mov bp,sp
sub sp,2
; ?debug L 10
mov bx,word ptr [bp+4]
mov al,byte ptr [bx+1]
cbw
shl ax,8
push ax
mov al,byte ptr [bx]
cbw
pop dx
or dx,ax
mov word ptr [bp-2],dx
; ?debug L 11
mov ax,dx
; ?debug L 12
leave
ret
_badtest endp
; ?debug L 15
_main proc near
push bp
mov bp,sp
sub sp,6
; ?debug L 19
mov word ptr [bp-6],4660
@6:
; ?debug L 22
lea ax,word ptr [bp-6]
push ax
call near ptr _test
inc sp
inc sp
mov word ptr [bp-4],ax
; ?debug L 23
lea ax,word ptr [bp-6]
push ax
call near ptr _badtest
inc sp
inc sp
mov word ptr [bp-2],ax
; ?debug L 24
mov ax,word ptr [bp-4]
cmp ax,word ptr [bp-2]
je @6
@8:
; ?debug L 28
jmp short @8
; ?debug L 29
leave
ret
_main endp
_TEXT ends
?debug C E9
_DATA segment word public 'DATA'
s@ label byte
_DATA ends
_TEXT segment byte public 'CODE'
_TEXT ends
public _badtest
public _test
public _main
end