社区
Delphi
帖子详情
汇编问题!在线等待
lijixue
2002-12-11 10:28:31
怎样调用汇编语言。用什么语句。
...全文
45
15
打赏
收藏
汇编问题!在线等待
怎样调用汇编语言。用什么语句。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wzrlover
2002-12-11
打赏
举报
回复
如果你是
mov al,True
改为
mov EAX,True
lijixue
2002-12-11
打赏
举报
回复
那是我的错误。应是mov al,true
可现在这里有错误。
wzrlover
2002-12-11
打赏
举报
回复
mov al,edx
al是存贮低8位地寄存器,EDX是存储32位地寄存器,
因此要改为
mov EAX,EDX
具体调用情况没试过。
不对之处还请指正!
xzgyb
2002-12-11
打赏
举报
回复
同意wzrlover(流光逝水)
lijixue
2002-12-11
打赏
举报
回复
to:流水逝光
现在还有一处错误请看代码
unit li2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
id_bit = $20000;
type
tcpuid = array[1..4] of longint;
tvendor = array[0..11] of char;
implementation
function iscpuid_available :boolean; register;
asm
pushfd {direct access to flags no possible, only via stack}
pop eax
mov edx,eax
xor eax,id_bit
push eax
popfd
pop eax
xor eax,edx
jz @exit
mov al,ture 此处有错误
@exit:
end;
function getcpuid :tcpuid; assembler;register;
asm
push ebx
push edi
mov edi,eax
mov eax,1
dw $a20f
stosd
mov eax,ebx
stosd
mov eax,ecx
stosd
mov eax,edx
stosd
pop edi
pop ebx
end;
function getcpuvendor :tvendor ;assembler;register;
asm
push ebx
push edi
mov edi,eax
mov eax,0
dw $a20f
mov eax,ebx
xchg ebx,ecx
mov ecx,4
@1:
stosb
shr eax,8
loop @1
mov eax,edx
mov ecx,4
@2:
stosb
shr eax,8
loop @2
mov eax,ebx
mov ecx,4
@3:
stosb
shr eax,8
loop @3
pop edi
pop ebx
end;
end.
[Error] li2.pas(29): Undeclared identifier: 'ture'
wzrlover
2002-12-11
打赏
举报
回复
编译通过,
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
id_bit = $20000;
type
Tcpuid = array[1..4] of longint;
Tvendor = array[0..11] of char;
implementation
function iscpuid_available :boolean; register;
asm
pushfd {direct access to flags no possible, only via stack}
pop eax
mov edx,eax
xor eax,id_bit
push eax
popfd
pop eax
xor eax,edx
jz @exit
//mov al,edx
mov EAX,edx //<<------
@exit:
end;
function getcpuid :tcpuid; assembler;register;
asm
push ebx
push edi
mov edi,eax
mov eax,1
dw $a20f
stosd
mov eax,ebx
stosd
mov eax,ecx
stosd
mov eax,edx
stosd
pop edi
pop ebx
end;
function getcpuvendor :tvendor ;assembler;register;
asm
push ebx
push edi
mov edi,eax
mov eax,0
dw $a20f
mov eax,ebx
xchg ebx,ecx
mov ecx,4
@1:
stosb
shr eax,8
loop @1
mov eax,edx
mov ecx,4
@2:
stosb
shr eax,8
loop @2
mov eax,ebx
mov ecx,4
@3:
stosb
shr eax,8
loop @3
pop edi
pop ebx
end;
end.
lijixue
2002-12-11
打赏
举报
回复
你们看一下代码呀。老大们
wzrlover
2002-12-11
打赏
举报
回复
函数定义不要在接口部分!
type
tcpuid = array[1..4] of longint;
tvendor = array[0..11] of char;
implementation
function .....
begin
asm
...
end;
end;
......
macula55
2002-12-11
打赏
举报
回复
asm
汇编语句
...
end;
lijixue
2002-12-11
打赏
举报
回复
现在一到asm就有错误
[Error] Unit2.pas(18): Statements not allowed in interface part
请帮我解决一下。
lijixue
2002-12-11
打赏
举报
回复
上边的傻子。这个问题用你答呀。你看一下代码。在发言吧
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
id_bit = $20000;
type
tcpuid = array[1..4] of longint;
tvendor = array[0..11] of char;
function iscpuid_available :boolean; register;
asm
pushfd {direct access to flags no possible, only via stack}
pop eax
mov edx,eax
xor eax,id_bit
push eax
popfd
pop eax
xor eax,edx
jz @exit
mov al,edx
@exit:
end;
function getcpuid :tcpuid; assembler;register;
asm
push ebx
push edi
mov edi,eax
mov eax,1
dw $a20f
stosd
mov eax,ebx
stosd
mov eax,ecx
stosd
mov eax,edx
stosd
pop edi
pop ebx
end;
function getcpuvendor :tvendor ;assembler;register;
asm
push ebx
push edi
mov edi,eax
mov eax,0
dw $a20f
mov eax,ebx
xchg ebx,ecx
mov ecx,4
@1:
stosb
shr eax,8
loop @1
mov eax,edx
mov ecx,4
@2:
stosb
shr eax,8
loop @2
mov eax,ebx
mov ecx,4
@3:
stosb
shr eax,8
loop @3
pop edi
pop ebx
edn;
end.
languageqq
2002-12-11
打赏
举报
回复
asm,你傻呀
phm
2002-12-11
打赏
举报
回复
up
xzgyb
2002-12-11
打赏
举报
回复
其实True就是1
可以
mov eax, 1
就行
lijixue
2002-12-11
打赏
举报
回复
还是那个错误
灵活运用TSRs的程序库
在
汇编
程序中灵活运用TSRs的程序库
用发送ICMP数据包的方法实现的Ping程序
用发送ICMP数据包的方法实现的Ping程序
用
汇编
求n!
这学期有一门《微机原理》课,这是其中一个作业,怕自己丢失,就放博客上吧 datas segment msg db 'input a number n= $' msg1 db 'the factor of n is: n! = $' msg2 db 'press any key to continue...$' n dw ? datas ends stacks segment
什么是
汇编
语言
汇编
语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在
汇编
语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,
汇编
语言对应着不同的机器语言指令集,通过
汇编
过程转换成机器指令。普遍地说,特定的
汇编
语言和特定的机器语言...
汇编
语言指令大全 附指令详解
例如,AND AX, 1234h 将把 AX 寄存器的当前值与十六进制数 1234h 进行逻辑 AND 操作,并将结果存储在 AX 寄存器中。例如,OR AX, 1234h 将把 AX 寄存器的当前值与十六进制数 1234h 进行逻辑 OR 操作,并将结果存储在 AX 寄存器中。例如,MUL BX 将把 BX 寄存器的当前值与 AL 寄存器的当前值相乘,并将结果存储在 AX 寄存器中。例如,SUB AX, 1234h 将从 AX 寄存器的当前值中减去十六进制数 1234h,并将结果存储在 AX 寄存器中。
Delphi
5,934
社区成员
262,941
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章