關於角色互動系統的開關研究 (Friend System)
發表於 : 2020-09-18, 21:36
台服地址: 00EE51CC
十進制數值: 4 8 1 16 32 64
對應為2的n次方數 2 3 0 4 5 6 (次方數)
下面用Delphi Pascal內聯彙編演示計算該值
下面的代碼實現了操作FS系統對應開關的功能
十進制數值: 4 8 1 16 32 64
對應為2的n次方數 2 3 0 4 5 6 (次方數)
下面用Delphi Pascal內聯彙編演示計算該值
代碼: 選擇全部
var ByteNum:Byte;
begin
asm
mov al, 1111101B // 狀態為全開
//xor al, al // 把0轉1 1轉0 也叫作取反 作用:開變關關變開
xor al, 8 // 把交易的狀態:由開變關或由關變開
mov ByteNum, al
end;
ShowMessage(IntToStr(ByteNum)); // 打印出值看看對不對:)
// (4+8+1+16+32+64)-8 =117
end;
代碼: 選擇全部
function InterativeSwitch(ByteNum: Byte):Byte; // 自訂 取反函數
asm
mov al, ByteNum
xor al, 1111101B
mov @RESULT, al
end;
function ISwitch1(ByteNum: Byte):Byte;
asm
mov al, ByteNum
xor al, 4
mov @RESULT, al
end;
function ISwitch2(ByteNum: Byte):Byte;
asm
mov al, ByteNum
xor al, 8
mov @RESULT, al
end;
function ISwitch3(ByteNum: Byte):Byte;
asm
mov al, ByteNum
xor al, 1
mov @RESULT, al
end;
function ISwitch4(ByteNum: Byte):Byte;
asm
mov al, ByteNum
xor al, 16
mov @RESULT, al
end;
function ISwitch5(ByteNum: Byte):Byte;
asm
mov al, ByteNum
xor al, 32
mov @RESULT, al
end;
function ISwitch6(ByteNum: Byte):Byte;
asm
mov al, ByteNum
xor al, 64
mov @RESULT, al
end;