小白求教 为啥我在命令行中汇编*.asm文件时总是打开PROTEL软件呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白求教 为啥我在命令行中汇编*.asm文件时总是打开PROTEL软件呢?相关的知识,希望对你有一定的参考价值。
电脑中已经安装了MASM汇编环境。应该怎样做才能实现正常汇编 连接 运行 调试呢?
编译:进入DOS方式,win7的话先进入cmd,这个会吧?进入 C:\masm 目录,运行masm.exe。
如果源程序文件不是以 asm 为扩展名的话,就要输入它的全名。比如p1.txt。
在输入源程序文件名的时候一定要指明它所在的路径。如果文件就在当前路径下,只输入文件名就可以。
输入要编译的源文件文件名后,一直按 Enter键。搞定,如果报错就修改程序。
连接:
进入DOS方式,进入C:\masm目录,运行link.exe。
如果目标文件不是以obj为扩展名的话,就要输入它的全名。比如:p1.bin。
在输入目标文件名的时候,要注意指明它所在的路径。这里,我们要连接的文件是当前路径下1.obj,所以此处输入“1”。
运行
这个直接运行生成的exe就是
调试
用debug命令+程序运行即可
例如,debug 1.exe
建议新手看王爽的汇编原理,里面讲的很详细 参考技术A 网上下载一个nmake ,把你环境里的BIN, INCLUDE, LIB文件夹取出来放到某个地方,
然后写个BAT文件把路径设置好.
例如:
@echo off
set include=C:\masm32\INCLUDE
set lib=C:\masm32\LIB
set path=C:\masm32\BIN;%path%
echo on
设置好后,在命令行把路径设置到.ASM路径上,然后直接 nmake 回车即可.
调试我也不清楚,没用过那些工具.
C语言GNU中汇编文件.s与.S的差异
本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。
博客内容主要围绕:
5G/6G协议讲解
算力网络讲解(云计算,边缘计算,端计算)
高级C语言讲解
Rust语言讲解
文章目录
GNU中汇编文件.s与.S的差异
今天下午学习ARM64汇编时,写了一段汇编程序,使用gcc编译总是说我没有定义 MY_LABEL,
问题代码如下,
#define MY_LABEL 0x20
.section .data
.section .text
.globl main
main:
ldr x7,=MY_LABEL
ret
问题出在文件名上
下面是GNU手册中的描述,
file.s Assembler code.
file.S
file.sx Assembler code that must be preprocessed.
问题找到了,因为我的文件名是 .s后缀 ,所以GNU编译器不会对汇编文件中的 #include、#if、#elif、#else、#endif、#define这些预处理指令做解析。
将文件名换成 .S后缀或者 .sx后缀,问题解决了,编译成功。
这里是从善若水的博客,感谢您的阅读📕📕📕
以上是关于小白求教 为啥我在命令行中汇编*.asm文件时总是打开PROTEL软件呢?的主要内容,如果未能解决你的问题,请参考以下文章