美文网首页
2019-09-14 MASM+VS:配置与控制台输出显示字符串

2019-09-14 MASM+VS:配置与控制台输出显示字符串

作者: FeinZee | 来源:发表于2019-10-02 22:30 被阅读0次

新学期入门汇编语言,作业1就是用控制台输出个人信息。我选择的语言环境是MASM32+Visual Studio2019,因为VS早就装好啦。我自己写的时候,别人的博客只贴代码不解释,这谁看得懂啊orz。希望这篇小白文能帮到一些人吧

配置

  1. VS2019的下载安装已有许多博客介绍,在此略过。

  2. 上官网[http://www.masm32.com] 下载MASM32, 具体选项可参考https://blog.csdn.net/u013761036/article/details/52186683

  3. 配置VS2019

  • 创建空项目


    1.png
2.png 3.png
  • 添加依赖项:右键项目名称-生成依赖项-生成自定义-选择masm


    5.png
  • 创建asm文件(Assembly Language):右键项目名称-添加-新建项,自己输入文件名,注意后缀自己添加为asm


    4.png
  • 配置lib和include路径:

    1. 右键项目名称-属性-链接器-常规-附加库目录-之前下载的MASM32安装文件夹下有一个lib文件夹


      6.png
    2. 右键项目名称-属性-链接器-输入-附加依赖项(本次不需要添加什么新的依赖项)


      7.png
    3. 右键项目名称-属性-Microsoft Macro Assembler-Include Paths


      8.png
    4. 确定

输出至控制台

汇编语言中,注释以分号;开头。见代码第一行。

 .386 ;伪指令,它表示这是一个 32 位程序,能访问 32 位寄存器和地址。
.model flat, stdcall
;选择了程序的内存模式(flat),并确定了子程序的调用规范(称为 stdcall)。其原因是 32 位 Windows 服务要求使用 stdcall 规范。
option casemap : none

include windows.inc;这些语句就去引入了所需要的inc文件和库文件,这就是为什么前面要做那些配置
include kernel32.inc
include masm32.inc
include user32.inc
includelib kernel32.lib
includelib masm32.lib
includelib user32.lib

.data ; 表明下面是数据段
szText db "Name:FeinZee", 0dh, 0ah, "Gender:Female", 0dh, 0ah, "ID:00000000", 0dh, 0ah, "Class:73", 0
;szText是变量名,自己按变量命名规则取, db是伪指令,表示以8位整数为单元,就是1个字节大小
;这一部分可以参考[http://c.biancheng.net/view/3476.html]
;后面跟着的就是字符串的内容,每一个字符都占了1个字节大小
;引号内是字符串内容,0dh是回车的ASCII码,0ah是换行的ASCII码,根据自己的需要添加
;最后一个0表示字符串以空字节结束,这个是可以改的

.code ;表明下面是代码段
main PROC ;一个叫做main的过程
;过程可以非正式地定义为:由返回语句结束的已命名的语句块。过程用 PROC 和 ENDP 伪指令来定义,并且必须为其分配一个名字(有效标识符)
invoke StdOut, addr szText
;引入StdOut函数,szText的地址addr作为它的参数传入,就会在控制台输出了
INVOKE ExitProcess, 0 ;可以将其看作为给 Windows 操作系统的返回值,返回值为零,则表示程序执行成功;而任何其他的整数值都表示了一个错误代码。
main ENDP
END main
  • 调试
    调试后,下方输出会显示:


    9.png

    还会弹出黑框:


    10.png

可以看到,我们的字符串正常显示了。如果你打开你的项目文件夹下的Debug文件夹(本例是C:\Users\FeinZee\source\repos\printInfo\Debug),你可以看到一个exe文件。双击它,控制台会一闪而过,你啥也看不清。如果你想看到你的输出信息,你可以用cmd打开它。


11.png

吐槽

一开始走了很多弯路,想不用任何库,就用DOS的一些指令,比如INT 21H来实现,但是现在也没整明白,最后还是问了同学,结果我思路错了,用库就完事儿了,两个下午没搞定的作业半小时就好了。人还是要厚脸皮多问啊。

相关文章

  • 2019-09-14 MASM+VS:配置与控制台输出显示字符串

    新学期入门汇编语言,作业1就是用控制台输出个人信息。我选择的语言环境是MASM32+Visual Studio20...

  • json字符串与json对象

    json对象 定义 控制台输出 json字符串 定义 控制台输出 JSON.stringify() 将json对...

  • 变量及强制类型转换

    在变量中加入字符串进行拼接,可以被同化为字符串举例1: 控制台输出:12举例2: 控制台输出:a2 - 、* 、/...

  • 简单的宏定义(不定期补充)

    控制台输出 RGB色值 格式化字符串 格式化字符串 输出点、坐标、Rect 格式化数字

  • Logstash过滤插件

    过滤插件 json 输入配置 输出结果 输出至ES kibana显示 KV 输入配置 kibana显示 Grok ...

  • C++ cout输出流详解

    cout可用于在计算机屏幕上显示信息,程序可以显示的最简单的屏幕输出类型是控制台输出,它只是纯文本。 控制台这个词...

  • console有趣的用法

    实验看点 1.修改控制台输出内容样式2.重写控制台输出格式(追加出错日期)3.以表格的形式显示控制台输出内容4.如...

  • Spring Boot中的日志配置

    默认在控制台输出日志,要想将日志输出到文件中,应进行如下配置:在application.properties中配置...

  • Python 基础(一)Python变量和字符串

    print函数 print用于向控制台输出字符串 示例:print("锄禾日当午") 、 print(3) 在输出...

  • 字符串(二)

    字符串的输出与输入 在实际开发中,程序经常需要用户输入字符串并进行处理。字符串被处理完成后,又需要输出显示。上述过...

网友评论

      本文标题:2019-09-14 MASM+VS:配置与控制台输出显示字符串

      本文链接:https://www.haomeiwen.com/subject/bhqzyctx.html