-1

私はC言語の方が詳しいのですが、以下のC言語のコーディングをアセンブリ言語にどのように書くのでしょうか? 私は試みましたが、いつも失敗しました。

if(a==4)
{
   routine1();
}
else if(a==5)
{
    routine2();
}
else if(a==6)
{
    routine3();
}
4

2 に答える 2

2

1 つの可能性は、を使用して書き直すことgotoです。そうすれば、使用する asm 言語に簡単に移植できます。

if (a != 4) goto not4;
routine1();
goto end;

not4: if (a != 5) goto not5;
routine2();
goto end;

not5: if (a != 6) goto not6;
routine3();
end:
于 2012-11-08T14:19:46.140 に答える
0

x86では、コマンドの詳細な説明のリンクもチェックして ください http://www.gabrielececchetti.it/Teaching/CalcolatoriElettronici/Docs/i8086_instruction_set.pdf

a100 
mov al, 0500;move whats in memory location 0500 to al register
mov bl,4; mov 4 into bl register
cmp al,bl;this compares them basically subtracting them so 0 is equal
jz label1;the label is another memory location that you would jump to if they are equal
mov bl,5; if it doesnt jump then the code will continue to run
cmp al,bl
jz label2
mov bl,6
cmp al,bl
jz label3
int 3; to end program or you can use ret 

...

label1 call 0200;call instruction runs the code that is at the memory location stated
label2 call 0300
label3 call 0400

うまくいけば、これが役に立ち、これがx86であることを覚えておいてください!! ハッピーコーディング!!

于 2012-11-08T15:07:25.020 に答える