社区
汇编语言
帖子详情
CALL通不过编译器问题
GGJJyangjinhan
2009-03-13 08:54:38
书上有段程序,需要调用很多库文件里的代码。在我代买全部输入正确时。可就是通不过MASM6.0的编译。这可怎么办
...全文
81
4
打赏
收藏
CALL通不过编译器问题
书上有段程序,需要调用很多库文件里的代码。在我代买全部输入正确时。可就是通不过MASM6.0的编译。这可怎么办
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BAYNPU
2009-03-16
打赏
举报
回复
去看看吧:一定要这文件IRVINE32.INC调到当前目录下,否则汇编无法通过.
INCLUDE Irvine32.inc
.data
intArray SWORD 0,0,0,0,1,20,35,-12,66,4,0
;intArray SWORD 1,0,0,0
;intArray SWORD 0,0,0,0
;intArray SWORD 0,0,0,1
noneMsg BYTE "A non-zero value was not found",0
.code
main PROC
mov ebx,OFFSET intArray
mov ecx,LENGTHOF intArray
L1:
cmp WORD PTR [ebx],0
jnz found
add ebx,2
loop L1
jmp notFound
found:
movsx eax,WORD PTR [ebx]
call WriteInt
jmp quit
notFound:
mov edx,OFFSET noneMsg
call WriteString
quit:
call crlf
exit
main ENDP
END main
GGJJyangjinhan
2009-03-16
打赏
举报
回复
INCLUDE irvine32.inc
data SEGMENT
Array SWORD 0,0,0,0,1,20,35,-12,66,4,0
;Array SWORD 1,0,0,0
;Array SWORD 0,0,0,0
;ArraY SWORD 0,0,0,1
nonemsg byte 'A non-zero value was not found',0.
data ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV EDX,OFFSET Array
MOV ECS,LENGTHOF Array
L1 CMP WORD PTR [EDX],0
JNZ FOUND
ADD EDX,2
LOOP L1
JMP NOTFOUND
FOUND: MOVSX EAX,WORD PTR [EDX]
CALL WRITESTRING
JMP QUIT
NOTFOUND: MOV EDX,OFFSET NONEMSG
CALL WRITESTRING
QUIT: CALL CRIF
CODE ENDS
END START
BAYNPU
2009-03-13
打赏
举报
回复
可能是32位的汇编吧。
把代码贴出来看看吧。
killbug2004
2009-03-13
打赏
举报
回复
检查代码是否完整,调用到外部文件要在编译时声明一把,链接是链接对应的库
汇编语言:call、call far ptr、call word ptr、call dword ptr、call 寄存器
call指令是转移指令,CPU执行call指令,进行两步操作:(1)将当前IP或当前CS和IP压入栈中(2)转移。call 标号指令功能:将当前IP压入栈中,然后转移到标号处执行指令。call far ptr标号指令功能:将当前CS压入栈中,然后再将当前IP压入栈中,最后转移到标号处执行指令。call 16位寄存器指令功能:将当前IP压入栈中,然后转移到寄存器中指明的目的地址处执行指令。call word ptr 内存单元地址指令功能:将当前IP压入栈中,然后转移到内存中指明的目的地址处执行指令。
函数和call详解
函数定义必须放在函数调用的前面,否则找不到标识符.例如:有时候代码很多,有互相调用,我们很难确保谁在前面谁在后面.例如call1调用call2 , call2又调用call1这时候是会报错的.怎么解决这个
问题
呢?就涉及到了函数的声明和定义这个时候我们就需要函数声明和函数定义分开的方法,这样就可以了.把函数第一句拷贝出来 加个;即可函数声明, 不带大括号 无函数体,也叫函数原型函数定义 ,带大括号 有函数体,也叫函数实现.一般函数声明放到头文件里,函数定义放到cpp里。
CALL是如何炼成的之理论篇
遇到一个CALL应该如何写? 这个是写一个内挂不可避免的
问题
.刚初学的朋友可能会不知道如何入手.想起刚学这方面的时候,绕过很多弯路,现在把一些经验写出来给大家参考参考吧,不是很高深的东西,但我觉得对某些人很有帮助. CALL是什么? CALL是汇编中的一个指令,CPU执行这条指令会执行2个动作 一:压入EIP入栈 二:跳转到后面的地址. 跟RETN指令配合就实现了汇编中子程序的作用,通常我们常说
揭秘汇编CALL指令:程序员的专线列车
本文以生动类比的方式讲解了汇编语言中的过程调用指令CALL。作者将CALL比作"专线列车",形象地阐述了其工作原理:保存返回地址并跳转到子过程,通过RET指令返回主线。文章详细介绍了CALL的不同调用方式、参数传递机制、栈保护原理及其在递归、模块化编程中的应用。同时分析了CALL的性能开销、安全隐患及优化策略,并对比了其与中断的区别。最后强调CALL作为现代软件工程根基的重要性,使其成为构建高效、可维护代码的关键技术。全文通过工厂车间、城市轨道交通等类比,将复杂的技术概念转化为易于理解的
win32汇编 invoke 和 call区别
INVOKE 的语法如下: INVOKE expression [,arguments] expression 既可以是一个函数名也可以是一个函数指针。参数由逗号隔开。 INVOKE是
编译器
支持的伪指令,会检查参数. CALL会直接去栈里取参. INVOKE最后也会变成 PUSH PUSH ... CALL 的形式
汇编语言
21,500
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章