1. 下列指令中,影響堆棧內容的指令是A.POP B.CALL C.JMP D.IRET 為什麼不選A為什麼
我感覺到ABD
C應該不影響
===================
樓下是正確的。
AD是出棧操作,不影響棧的內容
B要執行入棧操作,存儲指令指針內容,所以影響棧
C與棧無關。
2. JMP作圖(以X擬合Y)時如何修改X軸的順序
數據表填好數據→表,堆疊→堆疊列→表,排序→分組依據,標簽→右擊第一列的標簽→列屬性→值排序→通過上下移動就可以調整x軸標簽的位置→正常做圖……
3. 反匯編中的mov,jmp 等是什麼意思列舉一下。
下邊是一些匯編中的指令後邊都有意思!
051指令集
資料轉移指令
MOV 移動
MOVC 程式記憶體移動
MOVX 外部RAM和擴展I/O口與累加器A的數據傳送指令
PUSH 放入堆疊
POP 由堆疊取回
XCH 8位元交換
XCHD 低4位元交換
SWAP 高低4位元交換
算術指令
ADD 兩數相加
ADDC 兩數相加再加C
SUBB 兩數相減再減C
INC 加一指令
DEC 減一指令
MUL (MUL AB乘法指令僅此一條)相乘指令,所得的16位二進制數低8位存累加器A高8位存B
DIV (DIV AB 除法指令僅此一條)相除指令,所得商存A,余數存B
DA (DA A 只此一條指令)調整為十進數
邏輯指令
ANL做AND(邏輯與)運算
ORL做OR(邏輯或)運算
XRL 做(邏輯異或)運算
CLR 清除為0
CPL 取反指令
RL 不帶進位左環移
RLC 帶進位左環移
RR 不帶進位右環移
RRC 帶進位右環移
控制轉移類指令
JC C=1時跳
JNC C=0時跳
JB 位元=1時跳
JNB 位元=0時跳
JBC 位元=1時跳且清除此位元
LCALL 長調用子程序
ACALL 絕對調用子程序
RET 由副程式返回
RETI 由中斷副程式返回
AJMP 絕對轉移
SJMP 相對轉移
JMP @A+DPTR 散轉,相對DPTR的間接轉移
JZ A=0時跳
JNZA 0時跳
CJNE 二數比較,不相等時跳
DJNZ 減一,不等於0時跳
NOP 空操作
位變數指令
SETB 設定為1
ORG 程序開始,規定程序的起始地址
END 程序結束
EQU 等值指令(先賦值後使用)例:SUM EQU 30H
DB 定義位元組指令
DW 定義字內容
DS 定義保留一定的存貯單元數目
BIT 位地址符號指令 例:SAM BIT P1.0
RET 子程序返回指令
RETI 中斷子程序返回指令
$ 本條指令地址
算術運算指令
指令 說明 周期
ADD A,Rn A←A+Rn 12
ADD A,direct A←A+direct 12
ADD A,@Ri A←A+Ri 12
ADD A,#data A←A+data 12
ADDC A,Rn A←A+Rn+C 12
ADDC A,direct A←A+direct+C 12
ADDC A,@Ri A←A+Ri+C 12
ADDC A,#data A←A+data+C 12
SUBB A,Rn A←A-Rn-C 12
SUBB A,direct A←A-direct-C 12
SUBB A,@Ri A←A-Ri-C 12
SUBB A,#data A←A-data-C 12
INC A A←A+1 12
INC Rn Rn←Rn+1 12
INC direct direct←direct+1 12
INC @Ri @Ri←@Ri+1 12
INC DPTR DPTR←DPTR+1 12
DEC A A←A-1 12
DEC Rn Rn←Rn-1 12
DEC direct direct←direct-1 12
DEC @Ri @Ri←@Ri-1 12
MUL AB 兩個無符號的8位數據相乘,其中高階8位放入B緩存器,低階8位則放入累積器ACC 24
DIV AB 兩個無符號的8位數據相除,把ACC值除以B緩存器值,商數放回ACC,余數放在B 48
DA A 累加器作十進制調整 48
邏輯運算指令
指令 說明 周期
ANL A,Rn A←A and Rn 12
ANL A,direct A←A and direct 12
ANL A,@Ri A←A and Ri 12
ANL A,#data A←A and data 12
ANL direct,A direct←direct and A 12
ANL direct,#data direct←direct and data 24
ORL A,Rn A←A or Rn 12
ORL A,direct A←A or direct 12
ORL A,Rn A←A or Rn 12
ORL A,@Ri A←A or Ri 12
ORL A,#data A←A or data 12
ORL direct,A direct←direct or A 12
ORL direct,#data direct←direct or data 24
XRL A,Rn A←A xor Rn 12
XRL A,direct A←A xor direct 12
XRL A,@Ri A←A xor Ri 12
XRL A,#data A←A xor data 12
XRL direct,A direct←direct xor A 12
XRL direct,#data direct←direct xor data 12
CLR A 清除累加器 12
CPL A 累加器反相 12
RL A 累加器向左旋轉 12
RLC A 累加器和C左旋 12
RR A 累加器向右旋轉 12
RRC A 累加器和C右旋 12
SWAP A 累加器的高低四位互換 12
數據轉移指令
指令 說明 周期
MOV A,Rn A←Rn 12
MOV A,direct A←direct 12
MOV A,@Ri A←Ri 12
MOV A,#data A←data 12
MOV Rn,A Rn←A 12
MOV Rn,direct Rn←direct 24
MOV Rn,#data Rn←data 12
MOV direct,A direct←A 12
MOV direct,Rn direct←Rn 24
MOV direct,direct direct←direct 24
MOV direct,@Ri direct←Ri 24
MOV direct,#data direct←data 24
MOV @Ri,A Ri←A 12
MOV @Ri,direct Ri←direct 24
MOV @Ri,#data Ri←data 12
MOV DPTR,#data 16 Ri←16bit data 24
MOVC A,@A+DPTR A←程序內存的數據 24
MOVC A,@A+PC A←程序內存的數據 24
MOVX A,@Ri A←外部RAM的數據(8bit地址) 24
MOVX A,@DPTR A←外部RAM的數據(16bit地址) 24
MOVX @Ri,A 外部的RAM(8bit)←A 24
MOVX @DPTR,A 外部的RAM(16bit)←A 24
PUSH direc 推迭區←direct 24
POP direc direct←堆棧區 24
XCH A,Rn A和Rn互換 12
XCH A,direct A和direct互換 12
XCH A,@Ri A和Ri互換 12
XCHD A,@Ri A和Ri的低四位互換 12
位運算指令
指令 說明 周期
CLR C 清除進位旗標 12
CLR bit 清除直接位 12
SETB C 設定進位旗標 12
SETB bit 設定直接位 12
CPL C 進位旗標反相 12
CPL bit 直接位反相 12
ANL C,bit C←C and bit 24
ANL C,/bit C←C and bit(反相) 24
ORL C,bit C←C or bit 24
ORL C,/bit C←C or bit(反相) 24
MOV C,bit C←bit 12
MOV bit,C bit←C 24
JC rel 若C=1跳至rel 24
JNC rel 若C=0跳至rel 24
JB bit,rel 若bit=1跳至rel 24
JNB bit,rel 若bit=0跳至rel 24
JBC bit,rel 若bit=1跳至rel,且清除此位 24
程序跳躍指令
指令 說明 周期
ACALL addr11 絕對式子程序呼叫 24
LCALL addr16 遠程子程序呼叫 24
RET 從子程序返回 24
RETI 從中斷子程序返回 24
AJMP addr11 絕對式跳躍 24
LJMP addr16 遠程跳躍 24
SJMP rel 短程跳躍 24
JMP @A+DPTR 間接跳躍 24
JZ rel 若A=0跳至rel 24
JNZ rel 若A不等於0跳至rel 24
CJNE A,direct,rel 若A不等於direct跳至rel 24
CJNE A,#data,rel 若A不等於data跳至rel 24
CJNE Rn,#data,rel 若Rn不等於data跳至rel 24
CJNE @Ri,#data,rel 若Ri不等於data跳至rel 24
DJNZ Rn,rel Rn減1不等於0跳至rel 24
DJNZ direct,rel direct減1不等於0跳至rel 24
NOP 沒動作 12
縮寫符號說明
縮寫符號 說明 備注
Rn 緩存器R0-R7
direct 8bit內部數據存儲器,包括
1.內部數據存儲器(00-7F)的地址
2.特殊功能緩存器(80-FF)的地址,如P0,PSW,TMOD..等
@Ri 由緩存器R0或R1所定址的內部RAM數據
#data 8bit常數
#data 16 16bit常數
addr 16 16bit的目的地址,可使跳躍指令跳躍64k
addr 11 11bit的目的地址,可使跳躍指令跳躍2k
rel 具正負號的8位地址偏移量,用於相對地址的跳躍
bit 1個bit:只所有可以位定址的位。(如PSW.7為CY旗號)
A 累加器(累積器)
C或CY 進位旗號
AC 輔助進位旗號
Bb 指定位B0-B7
D 半位元組(4Bit)助憶符號
F0 旗號0
I 中斷
PC 程序計數器
P0 I/O port 0
P1 I/O port 1
P2 I/O port 2
P3 I/O port 3
PSW 程序狀態字組(類似於旗號緩存器)
SP 堆棧指針緩存器
B 緩存器B
DPTR 數據指針緩存器
X 外部滋要內存的助憶符號
@ 間接地址符號
$ 程序計數迄目前的值
reg 緩存器
8051 INSTRUCTION SET
1.Arithmetic operations:
Mnemonic Byte Cyc
ADD A,@Ri 1 1
ADD A,Rn 1 1
ADD A,direct 2 1
ADD A,#data 2 1
ADDC A,@Ri 1 1
ADDC A,Rn 1 1
ADDC A,direct 2 1
ADDC A,#data 2 1
SUBB A,@Ri 1 1
SUBB A,Rn 1 1
SUBB A,direct 2 1
SUBB A,#data 2 1
INC A 1 1
INC @Ri 1 1
INC Rn 1 1
INC DPTR 1 1
INC direct 2 1
INC direct 2 1
DEC A 1 1
DEC @Ri 1 1
DEC Rn 1 1
DEC direct 2 1
MUL AB 1 4
DIV AB 1 4
DA A 1 1
2.Logical opreations:
ANL A,@Ri 1 1
XRL A,@Ri 1 1
ANL A,Rn 1 1
XRL A,Rn 1 1
ANL A,direct 2 1
XRL A,direct 2 1
ANL A,#data 2 1
XRL A,#data 2 1
ANL direct,A 2 1
XRL direct,A 2 1
ANL direct,#data 3 2
XRL direct,#data 3 2
ORL A,@Ri 1 1
CLR A 1 1
ORL A,Rn 1 1
CPL A 1 1
ORL A,direct 2 1
RL A 1 1
ORL A,#data 2 1
RLC A 1 1
ORL direct,A 2 1
RR A 1 1
ORL direct,#data 3 2
RRC A 1 1
SWAP A 1 1
3.Data transfer:
Mnemonic Byte Cyc
MOV A,@Ri 1 1
MOV DPTR,#data16 3 2
MOV A,Rn 1 1
MOVC A,@A+DPTR 1 2
MOV A,direct 2 1
MOVC A,@A+PC 1 2
MOV A,#data 2 1
MOVX A,@Ri 1 2
MOV @Ri,A 1 1
MOVX A,@DPTR 1 2
MOV @Ri,direct 2 2
MOVX @Ri,A 1 2
MOV @Ri,#data 2 1
MOVX @DPTR,A 1 2
MOV Rn,A 1 1
PUSH direct 2 2
MOV Rn,direct 2 2
POP direct 2 2
MOV Rn,#data 2 1
XCH A,@Ri 1 1
MOV direct,A 2 1
XCH A,Rn 1 1
MOV direct,@Ri 2 2
XCH A,direct 2 1
MOV direct,Rn 2 2
XCHD A,@Ri 1 1
MOV direct,direct3 2
MOV direct,#data 3 2
4.Boolean variable manipulation:
Mnemonic Byte Cyc
CLR C 1 1
ANL C,bit 2 2
SETB C 1 1
ANL C,/bit 2 2
CPL C 1 1
ORL C,bit 2 2
CLR bit 2 1
ORL C,/bit 2 2
SETB bit 2 1
MOV C,bit 2 1
CPL bit 2 1
MOV bit,C 2 2
5.Program and machine control:
Mnemonic Byte Cyc
NOP 1 1
JZ rel 2 2
RET 1 2
JNZ rel 2 2
RETI 1 2
JC rel 2 2
ACALL addr11 2 2
JNC rel 2 2
AJMP addr11 2 2
JB bit,rel 3 2
LCALL addr16 3 2
JNB bit,rel 3 2
LJMP addr16 3 2
JBC bit,rel 3 2
SJMP rel 2 2
CJNE A,direct,rel 3 2
JMP @A+DPTR 1 2
CJNE A,#data,rel 3 2
DJNZ Rn,rel 2 2
CJNE @Ri,#data,rel 3 2
DJNZ direct,rel 3 2
CJNE Rn,#data,rel 3 2
4. 關於匯編中JMP跳轉的等價變形
retn是返回調用者的下一條指令的指令。正常情況下,它是返回到CALL指令的下一條指令。執行CALL指令的時候,系統會自動把其下一條指令的地址壓入堆棧,然後轉到調用子程序,子程序執行完畢,最後一條指令就是retn,它從堆棧彈出先前壓入堆棧的地址給指令指針寄存器IP,並跳轉到這個地址繼續執行。
三條等價指令中,第一條把立即數00489670賦給eax,第二條把這個數壓入堆棧,第三條執行retn,正是這條指令把剛才壓入堆棧的立即數00489670彈出並賦給IP,並跳轉到這個地址繼續執行,從而實現了與jmp 00489670指令完全相同的功能,所以稱為等價。
5. 51和6502單片機中調用跳轉指令JMP JSR RST這3個指令時,倒底要不要堆棧
51單片機裡面有JMP指令,不需要堆棧;JSR和RST指令51單片機是沒有的。51指令中用到堆棧的有:LCALL ,ACALL,RET,RETI等。
6. 能給我份 行者腳本命令全集么 謝謝拉
腳本編輯說明:
腳本一個指令必須佔一行,()前是指令名稱,()中的是指令參數,沒有參數可以不用寫().
指令名稱可以使用大小寫.
Label:標簽Label(XX),LABEL(檢測打怪圈),標簽下面為若干腳本命令
Jmp:跳轉到指定標簽Jmp(XXX),如Jmp(檢測打怪圈),跳到並執行此條目,實現控制腳本執行流程的作用
Call:調用函數Call(XXX),如call(開始打怪),執行一段指定代碼,與Jmp不同執行完後會後會執行Call語句後的一條語句
Exit:退出運行腳本 Exit()
Pause:暫停運行腳本:Pause()
條件判斷指令,如果判斷正確會執行下一條指令或下面跟著{}中的指令,否則會跳過下一條指令
或跳過下面跟著{}中的指令繼續執行
例:
ITEMCOUNT(回城卷,<,1)
{
MSG(身上沒有回城卷,使用走回城)
JMP(走回城)
}
USEITEM(回城卷)
DELAY(5000)
或
ITEMCOUNT(回城卷,>=,1)
JMP(使用回城卷回城)
MSG(沒有回城卷,走回城)
描述 命令 舉例
使用物品 useitem(名稱[ID=XXX]) USEITEM(返回卷軸[ID=736])
無備注
購買物品 buyitem(名稱[ID=XXX],數量) BUYITEM(返回卷軸[ID=736],1)
無備注
出售物品 sellitem(*) SELLITEM(*)
自動出售所有在INI文件中設置好的物品
存放倉庫物品 saveitem(短劍[ID=1],1) SAVEITEM(道具名[ID=],數量)
存放指定的物品到倉庫,需要注意的是,不能象賣物品一樣使用INI文件設置,必須指定物品ID和數量
取出倉庫物品 loaditem(短劍[ID=1],1) LOADITEM(道具名[ID=],數量)
對應於SAVEITEM,就是從倉庫中取物品,用法和BUYITEM相同(取的東西必須是倉庫中已有的)
腳本信息 msg(信息) MSG(死亡回城!)
括弧中的信息只有自己可見
開始戰斗 set(fightstart) SET(FIGHTSTART)
自動開始戰斗
結束戰斗 set(fightstop) SET(FIGHTSTOP)
自動結束戰斗
腳本延時 delay(N) DELAY(1000)
延時執行腳本下一步,單位:毫秒.例子中為延時1秒
條目 label(XX) LABEL(檢測打怪圈)
條目下面為若干腳本命令
跳至 jmp(XXX) JMP(檢測打怪圈)
跳到並執行此條目,起到連接腳本動作的作用
移動到 moveto(X,Y,Z) MOVETO(-96716,255766,-3443)
移動到坐標X,Y,Z
選定NPC npcsel(NPC名[ID=XXX]) NPCSEL(傑克森[ID=7002])
選定NPC
和NPC對話 npcdlg(NPC名[ID=7002]) NPCDLG(傑克森[ID=7002])
與NPC對話
選定對話項目 dlgsel(XX) DLGSEL(出售)
選定和NPC對話時出現的某一個項目
檢測人物屬性 charstatus(xxxxxx) CHARSTATUS(WEIGHT,>=,45%)
例子中的是檢測負重超過45%,還有檢測其他的命令
檢測點 posoutrange(x,y,z,范圍) POSOUTRANGE(-96716,255766,-3443,3000)
檢測是否在此范圍之外
檢測范圍內 posinrange(x,y,z,范圍) POSINRANGE(-96716,255766,-3443,3000)
檢測是否在此范圍之內
死亡回城 gohome() GOHOME()
和charstatus一起用可以達到死亡自動回城的效果
說話 say(文本) SAY(早) 其他玩家可見
退出運行腳本 exit() EXIT()
退出腳本的運行,如果退出命令前沒有條件激活跳到其他label.則腳本停止
暫停運行腳本 pause() PAUSE()
暫停運行腳本的段落
判斷包含文字 strindlg(文字) STRINDLG(蘑菇)
判斷NPC對話中是否有特定的文字,如果有,即執行下面的指令,用法同ITEMCOUNT(),多用於判斷是否接過任務用.
判斷不包含文字 stroutdlg(文字) STROUTDLG(蘑菇)
對應於STRINDLG,判斷對話中有無特定的文字,如果沒有,即執行下面的指令
人物站立或坐下 ChangeWaitType(x) ChangeWaitType(1)
x = 0 坐
x = 1 站
人物狀態判斷,HP.MP.WEIGHT為百分比
CharStatus([CHP|CMP|HP|MP|WEIGHT|LV|SP|RACE|STAND],[>=|>|==|!=|<|<=],num)
CharStatus(STAND,==,0)
CHP,CMP為人物當前實際值
WEIGHT為負重百分比
LV為人物等級
RACE為人物種族(人類=0,精靈=1,黑暗精靈=2,半獸人=3,矮人=4)
STAND判斷是否站立
ForceAttack()強行攻擊 可用於降級
動作指令:
MOVETO(x,y,z)
說明:移動到x,y,z
NPCSEL(名字[ID=x])
說明:選擇NPC
NPCDLG(名字[ID=x])
說明:跟NPC對話
DLGSEL(名稱)
說明:對話選擇
GOHOME()
說明:死亡回城
SAY(文字)
說明:一般說話
MSG(文字)
說明:外掛提示,別人看不到
UseItem(名字[ID=x])
說明:使用道具
BuyItem(名字[ID=x],數量)
說明:購買物品
例1:BuyItem(返回卷軸[ID=736],2)
例2:BuyItem(返回卷軸[ID=736],2;復活卷軸[ID=737],3)
SellItem(名字[ID=x],數量)
例1:SellItem(返回卷軸[ID=736],2)
例2:SellItem(返回卷軸[ID=736],2;復活卷軸[ID=737],3)
例3:SellItem(*)賣出道具設定中設為"賣"的全部物品
SaveItem(名字[ID=x],數量)
例1:SavelItem(返回卷軸[ID=736],2)
例2:SavelItem(返回卷軸[ID=736],2;復活卷軸[ID=737],3)
例3:SavelItem(*)保存道具設定中設為"存"的全部物品
LoadItem(名字[ID=x],數量)
例1:LoadlItem(返回卷軸[ID=736],2)
例2:LoadlItem(返回卷軸[ID=736],2;復活卷軸[ID=737],3)
ChangeWaitType(x)
人物站立或坐下
x = 0 坐
x = 1 站
條件指令:
StrInDlg(對話文字)
說明:用來判斷和NPC對話的對話框中是否有指定的文字
例:
NPCSEL(克普[ID=1007534])
NPCDLG(克普[ID=1007534])
DLGSEL(任務)
STRINDLG(答應委託)
{
DLGSEL(答應委託)
JMP(任務接完)
}
JMP(任務已經接過)
StrNotInDlg(對話文字)
說明:用來判斷和NPC對話的對話框中是否沒有指定的文字
例:
NPCSEL(克普[ID=1007534])
NPCDLG(克普[ID=1007534])
DLGSEL(任務)
STRNOTINDLG(答應委託)
{
MSG(已經接過任務)
JMP(已接任務)
}
DLGSEL(答應委託)
CharStatus([CHP|CMP|HP|MP|WEIGHT|LV|SP|RACE|STAND],[>=|>|==|!=|<|<=],num)
說明:人物狀態判斷,HP.MP.WEIGHT為百分比
CHP,CMP為人物當前實際值
WEIGHT為負重百分比
LV為人物等級
RACE為人物種族(人類=0,精靈=1,黑暗精靈=2,半獸人=3,矮人=4)
PosInRange(x,y,z,range)
說明:檢測人物當前坐標是否在以x,y,z為中心點range為半徑的圓心中
PosOutRange(x,y,z,range)
說明:檢測人物當前坐標是否在以x,y,z為中心點range為半徑的圓心外
例:在腳本開頭加入
PosOutRange(100,100,100,500)
{
MSG(請站在xxx附近開始)
EXIT()
}
ItemCount(名字[ID=x],[>=|>|==|!=|<|<=],count)
說明:比較人物身上指定名字或ID的道具數量是否滿足條件
流程式控制制指令:
CALL(LABEL名稱)
說明:調用LABEL標識的標簽地址執行,執行完返回,必須要有RETURN指令
例:
CALL(下一步)
調用完成會繼續執行下一步
...
EXIT()
LABEL(下一步)
...
RETURN
JMP(LABEL名稱)
說明:跳轉到LABEL標識的標簽地址執行
RETURN()
說明:CALL調用時必須用這個返回
EXIT()
說明:結束腳本運行
DELAY(x)
說明:延遲x毫秒
PAUSE()
說明:暫停腳本的執行,提示信息給玩家,讓玩家控制繼續執行
LABEL(標簽名)
說明:定義標簽名,用來JMP或CALL
設置指令:
SET([FIGHTSTART|FIGHTSTOP])
說明:設置戰斗開始或停止戰斗
例:SET(FIGHTSTART)//開始戰斗
SET(FIGHTSTOP)//停止戰斗
7. JMP圖形圖表,怎麼才能將幾列數據的散點圖和箱線圖集中體現在同一個圖形中,如圖所示,謝謝!
你首先得把這四組數據首尾相接變成一列, 並且把原來的組名也帶著如圖1所示, (可以使用右鍵自動填充)然後按照圖2操作即可. 選第三個gauge chart變數比較圖。
圖二
8. 自動編譯腳本怎麼寫
MOV DX, OFFSET MSG1
MOV AH, 9 ;9號功能調用,顯示提示.
INT 21H ;顯示.
MOV AH, 1 ;1號功能調用,鍵入、顯示.
INT 21H ;
CMP AL, '0'
JB ERR
CMP AL, '9'
JBE L1 ;小於等於9轉移.
ERR:
MOV DX, OFFSET MSG3
MOV AH, 9 ;9號功能調用,顯示提示.
INT 21H ;顯示.
JMP EXIT
;------------------------------
L1:
9. jmp怎麼修改橫坐標順序
jmp修改橫坐標順序:
表填好數據→表,堆疊→堆疊列→表,排序→分組依據,標簽→右擊第一列的標簽→列屬性→值排序→通過上下移動就可以調整x軸標簽的位置→正常做圖。