匯編指令


 

指令

功能

應用實例

LB

從存儲器中讀取一個字節的數據到寄存器中

LB R1, 0(R2)

LH

從存儲器中讀取半個字的數據到寄存器中

LH R1, 0(R2)

LW

從存儲器中讀取一個字的數據到寄存器中

LW R1, 0(R2)

LD

從存儲器中讀取雙字的數據到寄存器中

LD R1, 0(R2)

L.S

從存儲器中讀取單精度浮點數到寄存器中

L.S R1, 0(R2)

L.D

從存儲器中讀取雙精度浮點數到寄存器中

L.D R1, 0(R2)

LBU

功能與LB指令相同,但讀出的是不帶符號的數據

LBU R1, 0(R2)

LHU

功能與LH指令相同,但讀出的是不帶符號的數據

LHU R1, 0(R2)

LWU

功能與LW指令相同,但讀出的是不帶符號的數據

LWU R1, 0(R2)

SB

把一個字節的數據從寄存器存儲到存儲器中

SB R1, 0(R2)

SH

把半個字節的數據從寄存器存儲到存儲器中

SH R1,0(R2)

SW

把一個字的數據從寄存器存儲到存儲器中

SW R1, 0(R2)

SD

把兩個字節的數據從寄存器存儲到存儲器中

SD R1, 0(R2)

S.S

把單精度浮點數從寄存器存儲到存儲器中

S.S R1, 0(R2)

S.D

把雙精度數據從存儲器存儲到存儲器中

S.D R1, 0(R2)

DADD

把兩個定點寄存器的內容相加,也就是定點加

DADD R1,R2,R3

DADDI

把一個寄存器的內容加上一個立即數

DADDI R1,R2,#3

DADDU

不帶符號的加

DADDU R1,R2,R3

DADDIU

把一個寄存器的內容加上一個無符號的立即數

DADDIU R1,R2,#3

ADD.S

把一個單精度浮點數加上一個雙精度浮點數,結果是單精度浮點數

ADD.S F0,F1,F2

ADD.D

把一個雙精度浮點數加上一個單精度浮點數,結果是雙精度浮點數

ADD.D F0,F1,F2

ADD.PS

兩個單精度浮點數相加,結果是單精度浮點數

ADD.PS F0,F1,F2

DSUB

兩個寄存器的內容相減,也就是定點數的減

DSUB R1,R2,R3

DSUBU

不帶符號的減

DSUBU R1,R2,R3

SUB.S

一個雙精度浮點數減去一個單精度浮點數,結果為單精度

SUB.S F1,F2,F3

SUB.D

一個雙精度浮點數減去一個單精度浮點數,結果為雙精度浮點數

SUB.D F1,F2,F3

SUB.PS

兩個單精度浮點數相減

SUB.SP F1,F2,F3

DDIV

兩個定點寄存器的內容相除,也就是定點除

DDIV R1,R2,R3

DDIVU

不帶符號的除法運算

DDIVU R1,R2,R3

DIV.S

一個雙精度浮點數除以一個單精度浮點數,結果為單精度浮點數

DIV.S F1,F2,F3

DIV.D

一個雙精度浮點數除以一個單精度浮點數,結果為雙精度浮點數

DIV.D F1,F2,F3

DIV.PS

兩個單精度浮點數相除,結果為單精度

DIV.PS F1,F2,F3

DMUL

兩個定點寄存器的內容相乘,也就是定點乘

DMUL R1,R2,R3

DMULU

不帶符號的乘法運算

DMULU R1,R2,R3

MUL.S

一個雙精度浮點數乘以一個單精度浮點數,結果為單精度浮點數

DMUL.S F1,F2,F3

MUL.D

一個雙精度浮點數乘以一個單精度浮點數,結果為雙精度浮點數

DMUL.D F1,F2,F3

MUL.PS

兩個單精度浮點數相乘,結果為單精度浮點數

DMUL.PS F1,F2,F3

AND

與運算,兩個寄存器中的內容相與

ANDR1,R2,R3

ANDI

一個寄存器中的內容與一個立即數相與

ANDIR1,R2,#3

OR

或運算,兩個寄存器中的內容相或

ORR1,R2,R3

ORI

一個寄存器中的內容與一個立即數相或

ORIR1,R2,#3

XOR

異或運算,兩個寄存器中的內容相異或

XORR1,R2,R3

XORI

一個寄存器中的內容與一個立即數異或

XORIR1,R2,#3

BEQZ

條件轉移指令,當寄存器中內容為0時轉移發生

BEQZ R1,0

BENZ

條件轉移指令,當寄存器中內容不為0時轉移發生

BNEZ R1,0

BEQ

條件轉移指令,當兩個寄存器內容相等時轉移發生

BEQ R1,R2

BNE

條件轉移指令,當兩個寄存器中內容不等時轉移發生

BNE R1,R2

J

直接跳轉指令,跳轉的地址在指令中

J name

JR

使用寄存器的跳轉指令,跳轉地址在寄存器中

JR R1

JAL

直接跳轉指令,並帶有鏈接功能,指令的跳轉地址在指令中,跳轉發生時要把返回地址存放到R31這個寄存器中

JAL R1 name

JALR

使用寄存器的跳轉指令,並且帶有鏈接功能,指令的跳轉地址在寄存器中,跳轉發生時指令的放回地址放在R31這個寄存器中

JALR R1

MOV.S

把一個單精度浮點數從一個浮點寄存器復制到另一個浮點寄存器

MOV.S F0,F1

MOV.D

把一個雙精度浮點數從一個浮點寄存器復制到另一個浮點寄存器

MOV.D F0,F1

MFC0

把一個數據從通用寄存器復制到特殊寄存器

MFC0 R1,R2

MTC0

把一個數據從特殊寄存器復制到通用寄存器

MTC0 R1,R2

MFC1

把一個數據從定點寄存器復制到浮點寄存器

MFC1 R1,F1

MTC1

把一個數據從浮點寄存器復制到定點寄存器

MTC1 R1,F1

LUI

把一個16位的立即數填入到寄存器的高16位,低16位補零

LUI R1,#42

DSLL

雙字邏輯左移

DSLL R1,R2,#2

DSRL

雙字邏輯右移

DSRL R1,R2,#2

DSRA

雙字算術右移

DSRA R1,R2,#2

DSLLV

可變的雙字邏輯左移

DSLLV R1,R2,#2

DSRLV

可變的雙字羅伊右移

DSRLV R1,R2,#2

DSRAV

可變的雙字算術右移

DSRAV R1,R2,#2

SLT

如果R2的值小於R3,那么設置R1的值為1,否則設置R1的值為0

SLT R1,R2,R3

SLTI

如果寄存器R2的值小於立即數,那么設置R1的值為1,否則設置寄存器R1的值為0

SLTI R1,R2,#23

SLTU

功能與SLT一致,但是帶符號的

SLTU R1,R2,R3

SLTUI

功能與SLT一致,但不帶符號

SLTUI R1,R2,R3

MOVN

如果第三個寄存器的內容為負,那么復制一個寄存器的內容到另外一個寄存器

MOVN R1,R2,R3

MOVZ

如果第三個寄存器的內容為0,那么復制一個寄存器的內容到另外一個寄存器

MOVZ R1,R2,R3

TRAP

根據地址向量轉入管態

 

ERET

從異常中返回到用戶態

 

MADD.S

一個雙精度浮點數與單精度浮點數相乘加,結果為單精度

 

MADD.D

一個雙精度浮點數與單精度浮點數相乘加,結果為雙精度

 

MADD.PS

兩個單精度浮點數相乘加,結果為單精度

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM