汇编语言写一个计算器_跟着开源软件学汇编语言:Irvine汇编函数库

Irvine汇编函数库不算是标准的开源软件,它实际上是Kip Irvine的畅销书《Assembly Language for x86 Processors》所提供的一个函数库。这个库提供了很多非常方便的小函数,被广泛使用在汇编语言的教学中。该书的网站为http://www.asmirvine.com/。为了方便大家下载,我们也把相关文件分享在百度盘上。百度盘的链接是: https://pan.baidu.com/s/1QDOiVu4QGEeUjxksWDYf3Q 提取码: yk2k 。在这个目录下共有3个文件:
  • Irvine_7th_Edition.msi文件是该书的配套文件,安装后包括Irvine汇编函数库和全书所有例子程序;

  • IrvineLibHelp.exe是Gerald Cahill写的关于该库的使用说明(英文版);

  • AsmTest.rar是本文所提供的Visual Studio 2017示例,演示如何在程序中调用该函数库。

Irvine汇编函数库主要包括以下函数:
  • 字符串操作函数:Str_copy、Str_length、Str_compare、Str_trim 、Str_ucase等;

  • 键盘输入函数:ReadInt、ReadChar、ReadDec、ReadFloat、ReadHex等;

  • 屏幕输出函数:DumpMem、DumpRegs、WriteBin、WriteChar、WriteDec、WriteFloat、WriteHex等;

  • 文件操作函数:ReadFromFile、WriteToFile等;

  • 随机数产生函数:Randomize、RandomRange、Random32等。

这些函数的源程序都是用汇编语言写的,也是一个大家学习汇编语言技巧的好机会。该库提供了16位、32位和64位共3个版本。其中16位是运行在DOS下的,而32位和64位是运行在Windows下的。下面以DumpRegs函数为例说明一下如何使用该函数库。DumpRegs函数打印所有寄存器的当前值。这个函数非常方便于调试程序。下面是一个示例程序,其先完成了两个数的加法,然后调用 DumpRegs 函数。
; Demonstrate the AddTwo Procedure     (AddTwo.asm)INCLUDE Irvine32.inc.dataword1 WORD 1234hword2 WORD 4111h.codemain PROC  movzx  eax,word1  push  eax  movzx  eax,word2  push  eax  call  AddTwo  call  DumpRegs  exitmain ENDPAddTwo PROC; Adds two integers, returns sum in EAX.; The RET instruction cleans up the stack.    push ebp    mov  ebp,esp    mov  eax,[ebp + 12]     ; first parameter    add  eax,[ebp + 8]    ; second parameter    pop  ebp    ret  8        ; clean up the stackAddTwo ENDPEND main
下面是程序运行的效果。我们很容易看出EAX里面保存的是两个数相加的结果。

9ba499200e1de0cdfb5134428cbade42.png

该书的例子都是非常经典的,值得同学们去研究一番。公众号近期内容回顾

78ff3ff6c8c0b1dc9bb9e76ed6ba071b.gif终于知道讲课的自己有多帅了

78ff3ff6c8c0b1dc9bb9e76ed6ba071b.gif跟着开源软件学汇编语言:计算器

78ff3ff6c8c0b1dc9bb9e76ed6ba071b.gif跟着开源软件学汇编语言:谷歌cpu_features

78ff3ff6c8c0b1dc9bb9e76ed6ba071b.gifx86指令集趣谈

78ff3ff6c8c0b1dc9bb9e76ed6ba071b.gif16级本科生王玮琪同学的论文被IEEE Networking Letters录用

78ff3ff6c8c0b1dc9bb9e76ed6ba071b.gif2020版课题组文化衫出炉

78ff3ff6c8c0b1dc9bb9e76ed6ba071b.gif喜报 | 课题组在第十五届研究生电子设计竞赛全国总决赛获得三项荣誉

8193ee66f68d397882815212edbe9941.png微信号: bitpmcrg 欢迎关注北京理工大学专业移动通信组的公共号“北理工通信课题组” 7a70f664f05c463557c85f0011ddf1d1.png 600d409572cf478e5807a4ac3a10e36c.png 7ca019df6c6e7fd22c9255e8ba931449.png

求分享

7ca019df6c6e7fd22c9255e8ba931449.png

求点赞

7ca019df6c6e7fd22c9255e8ba931449.png

求在看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值