Irvine32 和 MASM

问题描述 投票:0回答:4

我需要一些帮助来将 Irvine32 inc/lib 支持添加到我的 asm 程序中。我将 inc/lib 添加到他们的文件夹中并添加 包括 Irvine32.inc includeLib Irvine32.lib 但与 Irvine32.lib 链接时出现错误。

有没有地方可以下载一个可以运行该库的一体化软件包。

谢谢

assembly masm irvine32
4个回答
2
投票

如果您使用 masm32 程序,请将 Irvine32.inc 放入 masm32\include 文件夹中,将 Irvine32.lib 放入 masm32\lib 文件夹中。在源文件 asm 中写入

includelib   \masm32\lib\Irvine32.lib
include      \masm32\include\Irvine32.inc

读这本书的时候我成功了!


1
投票

您提到的库与 Kip Irvine 的书“x86 处理器的汇编语言”一起使用。它目前是第六版,我发现它是组装的一个很好的介绍。

在前面的章节中(我相信是第 3 章),他回顾了包含过程。它说明了放置文件的位置等,可能对您有一些帮助(我会在这里记录它,但有点复杂)。

干杯,

斯科特


0
投票

本书的示例附带了一个演示项目,您可以使用该项目作为您的项目的基础。您还应该检查链接器设置,并确保 Irvine32 库的路径包含在附加库依赖项属性中。我曾经遇到过这个问题,只是使用 Kip 书中附带的默认项目创建了一个模板项目。

访问我的博客设置 vs10 以使用 masm32 进行编程,了解有关如何将库添加到 masm32 项目的详细信息。


0
投票

标题 MASM 模板(Template.asm)

包括 Irvine32.inc

.数据 销售 DWORD 7050、8020、3502、6750、4435、5000、7800、5100、6350、8300、2750、7340 计算 EQU 长度销售量 总计双字 72397 平均双字? 最高双字? msgTotal BYTE "总销售额为:", 0 msgAvg BYTE "平均销售额为:", 0 msgHighest BYTE "最高销售额是:", 0

.代码 主要过程

; TOTAL sales
mov     ecx, COUNT 
mov edi, 0

L1:

mov    eax, sales [edi]      ; EAX = Sales[0]
add    TOTAL, eax            ; Total = Total + EAX
add    edi, TYPE sales       ; EDI = EDI + 4
loop   L1

; AVERAGE sales
mov    eax, TOTAL
mov    ecx, COUNT
div    ecx                   ; EAX = EAX / COUNT
mov    AVG, eax

mov    edx, OFFSET msgAVG
call   writestring

mov    eax, AVG
call   writestring
call   writedec
call   Crlf

; HIGHEST sales
mov   ecx, COUNT
mov   edi, 0

L2:mov eax,销售[edi]; EAX = 销售额[0] cmp eax,最高 L3 ; EAX > 销售 跳转L4; EAX < SALES

L3:mov销售,eax;销售额=EAX jmp L4

L4:添加edi,TYPE 销售;电子数据交换 = 电子数据交换 + 4 循环L2

mov   edx, OFFSET   msgHighest 
call  writestring

mov   eax, HIGHEST
call  writedec
call  Crlf


exit

主要ENDP 主线结束

© www.soinside.com 2019 - 2024. All rights reserved.