上一页 1 ··· 177 178 179 180 181 182 183 184 185 ··· 215 下一页
摘要: var B: Byte; W: Word; C: Cardinal; begin {Byte 是1字节(8位)无符号整型, 其最大值是 111111112} asm mov B, 11111111B; end; ShowMessage(IntToStr(B)); {255} {Word 是2字节(16位)无符号整型, 其最大值是 11111111 11... 阅读全文
posted @ 2008-01-29 11:24 万一 阅读(6267) 评论(6) 推荐(0)
摘要: 汇编中的SHL(左移)、SHR(右移)命令也是和 Delphi 一样的. var ByteNum: Byte; begin //右移 shr asm mov al, 10000000B {128} shr al, 1 {shr 10000000 一次会得到 01000000} mov ByteNum, al end; ShowMessa... 阅读全文
posted @ 2008-01-28 10:51 万一 阅读(6986) 评论(14) 推荐(0)
摘要: AND: 逻辑与指令 OR : 逻辑或指令 XOR: 逻辑异或指令 NOT: 逻辑非指令 这和 Delphi 的逻辑命令完全一致. //逻辑非 Not: { not 1 = 0; not 0 = 1; } var ByteNum: Byte; begin //赋值 11111111B (255) 取反: asm mov al, 11111111B {eax ... 阅读全文
posted @ 2008-01-28 10:04 万一 阅读(5365) 评论(3) 推荐(0)
摘要: 关于进制: 生活中有 7进制(星期)、60进制(小时)、10进制(算术)等等. 计算机要用到 10进制、16进制、2进制和 8进制. 8进制用得少了, 但也有, 譬如 Unix 服务器上的文件属性. 2进制是计算机容易识别的; 10进制是人容易识别的, 据说 10进制源自于人有十个手指. 计算机为什么会使用 8进制和 16进制呢? 因为: 23=8; 24=16; 这样比较容易和 2进制换算... 阅读全文
posted @ 2008-01-25 21:44 万一 阅读(6257) 评论(2) 推荐(0)
摘要: 前面提到 32 位的寄存器有: EAX EBX ECX EDX ESP EBP ESI EDI; 其中, EAX ECX EDX 是自由使用的. 那么剩下的 EBX ESP EBP ESI EDI 五个寄存器就是应该保护的! 所谓保护, 并不是不可以使用, 而是在使用前先把其中的值寄存在另外一个地方, 用完后再恢复其值. 如果不这样做, 有可能会发生意想不到的错误. 举例: //使用应该保护... 阅读全文
posted @ 2008-01-25 17:19 万一 阅读(3668) 评论(7) 推荐(0)
摘要: //常量可以在汇编语句中运算 function Fun: Integer; const a = 11; b = 5; asm mov eax, a-b end; //测试 procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin i := Fun; ShowMessage(IntToSt... 阅读全文
posted @ 2008-01-25 17:16 万一 阅读(3730) 评论(2) 推荐(0)
摘要: //关于地址参数(var/out) function Fun(var x,y: Integer): Integer; asm mov eax, x {现在 eax 中只是 x 的地址} mov eax, [eax] { [eax] 是取值, 是不是类似于 P^ ? } mov edx, y add eax, [edx] //mov @Result, e... 阅读全文
posted @ 2008-01-25 09:25 万一 阅读(4266) 评论(5) 推荐(0)
摘要: //在汇编代码中使用 Result function Fun(x: Integer): Integer; asm mov ecx, &x dec ecx {汇编中的 dec 是减 1 指令, 和 Delphi 是一样的} mov @Result, ecx {在本例中去掉 @ 也可以, 暂时不知怎么回事} end; //测试 procedure TForm1.... 阅读全文
posted @ 2008-01-25 00:06 万一 阅读(4246) 评论(11) 推荐(1)
摘要: //Delphi 函数 function DelphiFun(x: Integer): Integer; begin Result := x * 2; end; //汇编函数, 和上面的函数是同样的功能 function AsmFun(x: Integer): Integer; asm add eax, eax {eax 可以获取第一个参数, 同时又是函数的返回值, 所以可以如此简... 阅读全文
posted @ 2008-01-24 23:34 万一 阅读(4394) 评论(1) 推荐(0)
摘要: 返回类型 寄存位置 Char、Byte AL 寄存器 SmallInt、Word AX 寄存器 Integer、LongWord、AnsiString、Pointer、Class EAX 寄存器 Real48 EAX 寄存器中是栈内返回值的指针 Int64 EDX、EAX 寄存器对 Single、Double、Extended、Comp 栈首寄存器 ST(0) ... 阅读全文
posted @ 2008-01-24 20:36 万一 阅读(4620) 评论(1) 推荐(0)
上一页 1 ··· 177 178 179 180 181 182 183 184 185 ··· 215 下一页