這個用組合語言怎麼實現啊?

時間 2021-06-15 21:37:49

1樓:菜夢

cmp eax, 0x10 ; a != 0x10setne dl

cmp ebx, 0x30 ; b != 0x30setne dh

cmp dx, 0x0101

mov edx, 0

cmove edx, ebx

add eax, edx ; a = a + b寫乙個彙編優化版本,不需要分支跳轉。

2樓:

先用C語言寫:

chara,

b;void

foo(

void

)然後編譯成彙編:

gcc -S -o test.s test.c -O2 -masm=intel

movzx

eax,

BYTE

PTR_a

cmpal,16

jeL1

movzx

edx,

BYTE

PTR_b

cmpdl,48

jeL1

addeax

,edx

movBYTE

PTR_a,al

L1:可將上面的80368的32位彙編,改成如下的8086的16位彙編:

mov al, BYTE PTR _acmp al, 16

je L1

mov dl, BYTE PTR _bcmp dl, 48

je L1

add al, dl

mov BYTE PTR _a, eaxL1:

3樓:皋月

mov bl,10h

mov dl,30h

cmp bl,10h

je @

cmp dl,30h

je @2

add dl,bl

adc dh,bh

mov bx,ax@2

組合語言如何實現算數以外的功能

其實高階語言本質上也是在move來move去,jump來jump去。只不過這些操作被包裝成了更 高階 的寫法而已。以C語言為例,最基本的賦值操作對應於mov及其各種變體 基本的算數運算對應於add,sub,mul,div這類指令,浮點運算還有一套單獨的指令 if語句條件判斷對應於cmp,test加上...

假如用組合語言重製某遊戲或者軟體能否降低 CPU 效能損耗?

ferry 這種 用組合語言重寫大型軟體 的假設就不存在現實可能性。相比之下實現通用量子計算都比這個假設靠譜至少乙個數量級 張強 一句話,小遊戲沒價值,大遊戲做不了。而且現在很多小遊戲都是手遊,也同樣做不了。手遊一般基於unity,所以沒有unity原始碼,也就沒法做優化,就算有unity原始碼,它...

組合語言REX字首怎麼用?

hello2018 指令都有固定的機器編碼,REX字首是機器編碼的一種擴充套件。MOV EAX,1這條指令的長資料長度是32位,最後生成機器碼包括 段字首資料長度字首操作碼 eax暫存器立即數。現在出現資料長度是64位了,比如MOV RAX,1,但是機器編碼都已經用完了,那怎麼辦呢?固定的加了字首R...