社区
Delphi
帖子详情
汇编问题!在线等待
lijixue
2002-12-11 10:28:31
怎样调用汇编语言。用什么语句。
...全文
38
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的程序库
当一个任务用完其分配的时间后,系统会切换到下一个
等待
的任务,这样可以确保多个任务能够有序且公平地访问处理器资源。这种调度方法特别适合多任务环境,如嵌入式系统、服务器或需要实时响应的应用场景。 在
汇编
...
用发送ICMP数据包的方法实现的Ping程序
Ping程序的工作原理是向目标主机发送一个ICMP回显请求报文,然后
等待
目标主机返回相应的ICMP回显应答报文,以此判断网络的连通性。 **ICMP协议:** 1. ICMP协议是IP协议的一部分,用于在IP层提供错误报告和控制信息...
用
汇编
求n!
这学期有一门《微机原理》课,这是其中一个作业,怕自己丢失,就放博客上吧 datas segment msg db 'input a number n= $' ...
等待
输入 int 21h mov ah,4ch int 21h codes ends end start
什么是
汇编
语言
汇编
语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在
汇编
语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号...
5.1
汇编
语言:
汇编
语言概述
汇编
语言是一种面向机器的低级语言,用于编写计算机程序。
汇编
语言与计算机机器语言非常接近,
汇编
语言程序可以使用符号、助记符等来代替机器语言的二进制码,但最终会被
汇编
器编译成计算机可执行的机器码。相较于...
Delphi
5,931
社区成员
262,938
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章