编写汇编时使用c库函数

前言

​ 写老师的大作业的时候,发现需要使用汇编实现scanf和printf的功能,在网上查了一下,scanf需要调用vc的库函数,printf自己实现就行了。

​ 对于scanf函数,需要使用masm的lib,然后在vs中includelib msvcrt.lib,这时候就需要下载安装masm,然后将其中的include和lib加入本项目,本文就是其中的具体操作。

下载安装masm32

  • 点击这里

  • 选择Australia1[1]下载

  • 解压之后点击install,选择好安装的目录,之后傻瓜式下一步即可

在vs项目中配置[2]

配置include

  • Microsoft Macro Assembler-通用-Include Paths[3]

  • 在这里添加你的masm的include文件夹

配置lib

  • 链接器-通用-附加库目录
  • 在这里添加你的masm的lib文件夹

配置生成程序的类型(可选)

说明:如果按照之前一篇博客的说明配置过了就可以跳过

  • 链接器-系统-子系统
  • 选择控制台[4]

测试

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.386
.MODEL flat,stdcall
.STACK 4096
includelib msvcrt.lib
printf PROTO C:ptr sbyte,:vararg
scanf PROTO C:ptr sbyte,:vararg
MAX = 100
.data
num1 db MAX dup(0)
num2 db MAX dup(0)
stringnum db "%d %d",0AH,0DH,0
inputhintstring db "hello, 你这么好看,输入两个数字好不好呀。",0ah,0dh,0
scanstring db "%s %s",0
printstring db "结果是:",0ah,0dh,"%s , %s",0
.code
main proc
invoke printf,offset inputhintstring
invoke scanf,offset scanstring,offset num1,offset num2
invoke printf,offset printstring,offset num1,offset num2
ret
main endp
end main

测试结果


  1. 1.下面几个带中文的都行
  2. 2.以下操作均要在项目资源管理器中右键项目-属性窗口中操作
  3. 3.中文翻译可能是“包含路径”?
  4. 4.也可能没翻译,就是Console

本博客收到的所有打赏均将用于博主女朋友的化妆品购买及养胖计划