1 頁 (共 1 頁)

關於角色互動系統的開關研究 (Friend System)

發表於 : 2020-09-18, 21:36
fantastic
台服地址: 00EE51CC
十進制數值: 4 8 1 16 32 64
對應為2的n次方數 2 3 0 4 5 6 (次方數)
下載.jpg
下載.jpg (118.65 KiB) 已瀏覽 653 次
下面用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;
下面的代碼實現了操作FS系統對應開關的功能

代碼: 選擇全部

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;