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
12 个解决方案
#1
1,2,3不懂,4,用
masm,因为
nasm语法格式是ATT的。而王爽老师里的示例用的是Intel格式的。
#2
上面贴的代码文件名为 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
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
#3
Sorry, 我忘了说我用的是Ubuntu, 估计没MASM ^_^
#4
Hi masmaster, 烦请问下ATT是不是 <==> AT&T ?
#5
问题1:汇编大体分AT&T格式汇编与intel格式汇编两种,详细资料自己google!
问题2:汇编语言语法细节确实与编译器有关!
问题3:汇编学习的顺序一般为实模式汇编与保护模式汇编!王爽的和intel汇编程序设计可作为入门教材,提高教材有罗云斌的win32汇编程序设计,于渊自己动手写操作系统。
问题4:再回到问题1,ubuntu下的汇编大都是AT&T格式的汇编,微软的windows系统大都为intel格式的汇编,王爽的书基于intel格式的汇编,须用masm编译器,如果用nasm编译器须做改变。
问题2:汇编语言语法细节确实与编译器有关!
问题3:汇编学习的顺序一般为实模式汇编与保护模式汇编!王爽的和intel汇编程序设计可作为入门教材,提高教材有罗云斌的win32汇编程序设计,于渊自己动手写操作系统。
问题4:再回到问题1,ubuntu下的汇编大都是AT&T格式的汇编,微软的windows系统大都为intel格式的汇编,王爽的书基于intel格式的汇编,须用masm编译器,如果用nasm编译器须做改变。
#6
没有masm,那可以用虚拟机装个xp系统。
#7
看不懂
学了这么久还是看不懂
学了这么久还是看不懂
#8
听六楼的,装个XP或者在linux下装一个DOSEMU,也可。
#9
(一)选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好运。
#10
……ubuntu是AT&T的汇编吧
#11
谢谢大家了!!
#12
晕,assume
segment
ends
end
这些都是masn的语法,
要用masn编译器。
nasm语法是
[section.xx]定义一个段。
segment
ends
end
这些都是masn的语法,
要用masn编译器。
nasm语法是
[section.xx]定义一个段。
#1
1,2,3不懂,4,用
masm,因为
nasm语法格式是ATT的。而王爽老师里的示例用的是Intel格式的。
#2
上面贴的代码文件名为 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
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
#3
Sorry, 我忘了说我用的是Ubuntu, 估计没MASM ^_^
#4
Hi masmaster, 烦请问下ATT是不是 <==> AT&T ?
#5
问题1:汇编大体分AT&T格式汇编与intel格式汇编两种,详细资料自己google!
问题2:汇编语言语法细节确实与编译器有关!
问题3:汇编学习的顺序一般为实模式汇编与保护模式汇编!王爽的和intel汇编程序设计可作为入门教材,提高教材有罗云斌的win32汇编程序设计,于渊自己动手写操作系统。
问题4:再回到问题1,ubuntu下的汇编大都是AT&T格式的汇编,微软的windows系统大都为intel格式的汇编,王爽的书基于intel格式的汇编,须用masm编译器,如果用nasm编译器须做改变。
问题2:汇编语言语法细节确实与编译器有关!
问题3:汇编学习的顺序一般为实模式汇编与保护模式汇编!王爽的和intel汇编程序设计可作为入门教材,提高教材有罗云斌的win32汇编程序设计,于渊自己动手写操作系统。
问题4:再回到问题1,ubuntu下的汇编大都是AT&T格式的汇编,微软的windows系统大都为intel格式的汇编,王爽的书基于intel格式的汇编,须用masm编译器,如果用nasm编译器须做改变。
#6
没有masm,那可以用虚拟机装个xp系统。
#7
看不懂
学了这么久还是看不懂
学了这么久还是看不懂
#8
听六楼的,装个XP或者在linux下装一个DOSEMU,也可。
#9
(一)选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好运。
#10
……ubuntu是AT&T的汇编吧
#11
谢谢大家了!!
#12
晕,assume
segment
ends
end
这些都是masn的语法,
要用masn编译器。
nasm语法是
[section.xx]定义一个段。
segment
ends
end
这些都是masn的语法,
要用masn编译器。
nasm语法是
[section.xx]定义一个段。