NASM编译王爽的《汇编语言2》中的第一个程序未通过

flowingfirefly 2012-02-26 10:15:19
疑惑:
1. 汇编语言有没有标准?(比如C语言就有ANSI标准)
2. 汇编语言是不是与汇编编译器有关? (我知道的有GNU as, MASM, NASM)
3. 汇编进阶的书籍有哪些?
4. NASM编译王爽的《汇编语言第二版》中的第一个程序未通过, 为什么?

王爽 《汇编语言第二版》中第一个汇编语言程序的代码:


assume cs:codesg
codesg segment
mov ax,0123h
mov bx,0456h
add ax,bx
add ax,ax

mov ax,4c00h
int 21h
codesg ends
end

...全文
310 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhurongx 2012-05-30
  • 打赏
  • 举报
回复
晕,assume
segment
ends
end
这些都是masn的语法,
要用masn编译器。
nasm语法是
[section.xx]定义一个段。
flowingfirefly 2012-02-27
  • 打赏
  • 举报
回复
谢谢大家了!!
ProgrammingRing 2012-02-27
  • 打赏
  • 举报
回复
……ubuntu是AT&T的汇编吧
gsy999 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 flowingfirefly 的回复:]
疑惑:
1. 汇编语言有没有标准?(比如C语言就有ANSI标准)
2. 汇编语言是不是与汇编编译器有关? (我知道的有GNU as, MASM, NASM)
3. 汇编进阶的书籍有哪些?
4. NASM编译王爽的《汇编语言第二版》中的第一个程序未通过, 为什么?

王爽 《汇编语言第二版》中第一个汇编语言程序的代码:


Assembly code

as……
[/Quote]
(一)选Windows XP或Win7操作系统
(二)下载MASM32开发包 下载地址:http://www.masm32au.com/masm32/masm32v11r.zip
(三)双击开发包文件名,按照提示安装开发包,假设安装目录为:D:\masm32
(四)在D:盘(其他盘也行)建立一个存放你写的源代码的目录,假设目录的路径是D:\myasm
(五)在D:\myasm目录下用写字本新建一个文件,取名为:s.bat,文件用来设置环境变量,内容如下:
SET PATH D:\masm32
SET INCLUDE=D:\masm32\INCLUDE
SET LIB=D:\masm32\LIB
(六)打开控制台窗口,将当前目录切换到你的源文件所在目录d:\myasm
(有的人称命令行窗口,有的人称DOS窗口)
(你可以通过窗口左下角的 开始》程序》附件》命令行提示符 这一系列查找操作,最后打开控制台窗口)
(七)在控制台窗口输入 s.bat,然后敲回车键执行。这一步用来配置你的编译环境变量。
(八)在控制台窗口输入ml,然后敲回车键执行,看看窗口是不是有了执行ml的信息,如果有,说明配置对了,如果说文件没找到,那就是环境变量配置的不对。
(九)将你在一楼提供的源文件复制到d:\myasm目录下,假设名称为f.asm
(十)在控制台窗口输入:
ml /Bllink16.exe f.asm
然后敲回车键执行,如果源代码没有错误,会在d:\myasm目录下生成f.exe文件
(十一)在命令行窗口输入:f,然后敲回车键执行,查看你编制的程序运行情况。(可惜你的f.asm程序没有输出信息,所以你什么也看不到)
祝LZ好运。
masmaster 2012-02-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 flowingfirefly 的回复:]
Sorry, 我忘了说我用的是Ubuntu, 估计没MASM ^_^
[/Quote]
听六楼的,装个XP或者在linux下装一个DOSEMU,也可。
tangmaolin2011 2012-02-26
  • 打赏
  • 举报
回复
看不懂 
学了这么久还是看不懂
竞择 2012-02-26
  • 打赏
  • 举报
回复
没有masm,那可以用虚拟机装个xp系统。
竞择 2012-02-26
  • 打赏
  • 举报
回复
问题1:汇编大体分AT&T格式汇编与intel格式汇编两种,详细资料自己google!
问题2:汇编语言语法细节确实与编译器有关!
问题3:汇编学习的顺序一般为实模式汇编与保护模式汇编!王爽的和intel汇编程序设计可作为入门教材,提高教材有罗云斌的win32汇编程序设计,于渊自己动手写操作系统。
问题4:再回到问题1,ubuntu下的汇编大都是AT&T格式的汇编,微软的windows系统大都为intel格式的汇编,王爽的书基于intel格式的汇编,须用masm编译器,如果用nasm编译器须做改变。
flowingfirefly 2012-02-26
  • 打赏
  • 举报
回复
Hi masmaster, 烦请问下ATT是不是 <==> AT&T ?
flowingfirefly 2012-02-26
  • 打赏
  • 举报
回复
Sorry, 我忘了说我用的是Ubuntu, 估计没MASM ^_^
flowingfirefly 2012-02-26
  • 打赏
  • 举报
回复
上面贴的代码文件名为 firstASM.asm,

nasm -o firstASM.bin firstASM.asm 之后的错误信息如下:

firstASM.asm:1: error: parser: instruction expected
firstASM.asm:2: error: parser: instruction expected
firstASM.asm:10: error: symbol `codesg' redefined
firstASM.asm:10: error: parser: instruction expected
masmaster 2012-02-26
  • 打赏
  • 举报
回复
1,2,3不懂,4,用masm,因为nasm语法格式是ATT的。而王爽老师里的示例用的是Intel格式的。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧