基于Irvine库的x86汇编代码错误修复请求
x86汇编(Irvine环境)错误修复指南
1. 第98行:A2032 "Invalid use of register"
对应代码:cmp eax, edx+7 ; Check if the end of the line is reached for the reviewer number
- MASM不支持直接将
寄存器+立即数作为cmp的操作数,必须先把计算结果存入临时寄存器:mov ecx, edx add ecx, 7 cmp eax, ecx ; Check if the end of the line is reached for the reviewer number
2. 第70行:MSB3721 编译命令执行失败
- 这个错误是由其他汇编语法/符号错误(比如错误1、3、4)导致
ml.exe编译终止,修复所有其他错误后,该错误会自动消失。
3. 第30行:A2006 "undefined symbol : OpenFile"
- Irvine32库没有提供
OpenFile函数,需替换为库中存在的文件操作函数:- 打开输入文件用
OpenInputFile,打开输出文件用OpenOutputFile - 示例代码:
invoke OpenInputFile, ADDR fileNameBuffer
- 打开输入文件用
- 确认已正确引入Irvine头文件:
include Irvine32.inc,且项目链接了Irvine32.lib库文件。
4. 第34行:A2006 "undefined symbol : ReadLine"
- Irvine32库无
ReadLine函数,根据需求选择对应方案:- 读取控制台输入行:使用
ReadString函数,需传入缓冲区地址和最大长度invoke ReadString, ADDR inputBuffer, 256 - 从已打开的文件读取行:需手动循环读取字符,判断是否遇到换行符(
0Ah)或文件结束,结合ReadFromFile实现。
- 读取控制台输入行:使用
项目配置检查
- 确保Visual Studio项目设置中:
- 包含目录已添加
c:\Irvine - 库目录已添加
c:\Irvine - 链接器输入依赖项添加
Irvine32.lib
- 包含目录已添加
内容的提问来源于stack exchange,提问作者Saviorr
相关产品推荐
相关产品推荐

