程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 初學Delphi嵌入匯編[8] - 8 位寄存器、16 位寄存器與 32 位寄存器(2)

初學Delphi嵌入匯編[8] - 8 位寄存器、16 位寄存器與 32 位寄存器(2)

編輯:Delphi

如果給 AL 賦了值, 那麼 AX EAX 也就有了值.

//測試1var
 i: integer; {4 字節、32 位}
 w: Word;   {2 字節、16 位}
 b1,b2: byte; {1 字節、 4 位}
begin
 i := maxint;
 w := 0;
 b1 := 0;
 b2 := 0;
 asm
  mov ecx, i
  mov w, cx
  mov b1, ch
  mov b2, cl
 end;
 ShowMessage(Format('w=%d; b1=%d; b2=%d',[w,b1,b2]));
{結果顯示: w=65535; b1=255; b2=255
 果然沒錯, 給 ecx 賦值後, cx ch cl 都有值了!
}
end;

//測試2var
 i: integer; {4 字節、32 位}
 w: Word;   {2 字節、16 位}
 b: byte;   {1 字節、 4 位}
begin
 b := 255;
 i := 0;
 w := 0;
 asm
  mov cl, b
  mov w, cx
  mov i, ecx
 end;
 ShowMessage(Format('i=%d; w=%d',[i,w]));
{結果顯示: i=255; w=255
 這好像是沒有問題的, 我用 al ax eax 三個寄存器測試也是如此;
 但用 dl dx edx 測試, 就會有意外的結果, 奇怪呀!
}
end;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved