社区
Delphi
帖子详情
汇编问题!在线等待
lijixue
2002-12-11 10:28:31
怎样调用汇编语言。用什么语句。
...全文
31
15
打赏
收藏
汇编问题!在线等待
怎样调用汇编语言。用什么语句。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)代替指令或操作数的地址。在不同的设备中,
汇编
语言对应着不同的机器语言指令集,通过
汇编
过程转换成机器指令。普遍地说,特定的
汇编
语言和特定的机器语言...
5.1
汇编
语言:
汇编
语言概述
汇编
语言是一种面向机器的低级语言,用于编写计算机程序。
汇编
语言与计算机机器语言非常接近,
汇编
语言程序可以使用符号、助记符等来代替机器语言的二进制码,但最终会被
汇编
器编译成计算机可执行的机器码。相较于高级语言(如C、Python等),
汇编
语言学习和使用难度相对较大,需要对计算机内部结构、指令集等有深入的了解,以及具有良好的编程习惯和调试能力。但对于需要对计算机底层进行操作的任务,
汇编
语言是极其高效的,因为其可以实现对计算机底层资源的精细控制,极大地提高了计算机运行效率。
Delphi
5,928
社区成员
262,931
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章