Ⅰ nasm.exe打开就闪退是怎么回事
nasm是没有运行画面的,所以打开就闪退了.
nasm是需要带参数使用的,你可以选择在cmd.exe中用命令行调用nasm或写一个bat批处理文件运行之.
现假设你有一汇编文件a.asm
命令行可以这么写:
(这里写好nasm的安装路径)/nasm.exe -f win32 -o a.obj a.asm
这样就把a.asm编译了,但是没有链接,因为nasm似乎不具有链接的能力.
要解决这个问题,你可以再找一个连接器把这个a.obj链接一下.
对本人而言,本人计算机上安装了DevC++编译器,其内部有一个ld.exe是个链接器
ld -o a.exe a.obj
这样就成功滴链接出了一个可执行文件了.
如果你要写bat的话,建议在每句命令的下一行,加一行pause把控制台停下来,这样能让你看清编译器的反馈信息.
Ⅱ NASM怎么实现段间跳转指令
nasm对跳转的设计很人性化. 一般来说nasm中跳转标明长度就可以了. 在实模式跨入保护模式的那条经典jmp中, linux的代码是直接编的机器码, nasm加一个dword就可以了.
如果jmp这种方法解决不了的话, 你可以试一试把地址压栈, 然后执行一个retf就可以了
Ⅲ nasm的hello world
汇编的编译器有masm tasm nasm。你是初学者就用masm吧 ide就不要用了 有是有 像masmplus radmasm都是不错的 但是初学的话也用不到。
下面的代码我编译过了 可以显示hello word!图我就不上了。
data segment
db 'HELLO WORD!'
data ends
assume ds:data,cs:code
code segment
start:mov ax,data
mov ds,ax //置段寄存器ds值
mov ax,0b800H
mov es,ax //置段寄存器es值
mov cx,11 //设置循环次数
xor bx,bx //清bx值
xor di,di //清di值
s1:
mov al,[di]
mov byte ptr es:[bx],al //将hello word!每一位送入显存
add bx,2 //送下一位
inc di
loop s1
mov ax,4c00h
int 21h //将dos控制交还给command
code ends
end start
用masm编译 命令是masm+文件名 编译出obj之后 link+文件名。
Ⅳ 软盘镜像是什么
计算机里CDROM和软盘
制作方法:
首先是编译引导文件。编译.asm文件在linux环境下同样可以用nasm,安装命令如下:
sudo
apt-get install nasm
编译命令跟windows环境下一样:
nasm
boot.asm -o boot.bin
其次是创建一个虚拟软盘。由于VirtualBox在不能像创建虚拟空白硬盘一样创建虚拟软盘,而只能选择一个已有的虚拟软驱介质(.img),所以我们要先创建一个基于我们先前编译得到的boot.bin的虚拟软盘。参考于渊的书,我找到了这一条命令:
dd
if=boot.bin of=floppy.img bs=512 count=1
这条命令能在主文件夹下创建一个大小为512B,名为floppy.img,写入了boot.bin的虚拟软盘镜像(由于boot.bin限制,floppy.img大小只能为512B)。其中boot.bin是读取位置,loppy.img是写入位置,bs=512是每次读512个字节,count=1是指读取一次。
现在便可以在VirtualBox里创建MyOS虚拟机。点击新建按键后,安装过程中需要改动默认的有:操作系统和版本都选择other,内存大小选4mb,去掉Star-up
Disk的勾选。
建成后先不要启动,还有最后一个步骤。选中建好的MyOS,设置-Storage-添加软盘控制器-选中软盘控制器-添加虚拟软驱-Choose
disk-选择主文件夹下的floppy.img-确定。
Ⅳ 2012 server环境变量在哪
在Windows平台上设置环境变量
我的电脑->属性->高级->环境变量->系统变量中添加环境变量
对于Windows系统而言,名为Path的环境变量以经存,可以直修改该环境变量,在该环境变量值后面追加C:\Program Files\NASM。然后新开一个命令窗口,运行path看看新加的环境变量是否存在了。
再在任何目录下运行nasm命令就都ok了
一般建议在用户变量里,去添加环境变量 。
用户变量与系统变量的区别:用户变量和系统变量并没有什么太大的区别,只是用户变量只对当前用户有效,而系统变量对所有用户有效。不过,系统变量会排在用户变量前面,如果说,两个地方都包含了nasm命令,则优先执行Path系统变量路径里包含的nasm命令。
Ⅵ 怎么在64位系统下编译nasm
用记事本写代码
用命令编译
nasm -f <format> <filename> [-o <output>]
-f后面是输出格式,具体的用nasm -hf查询
filename是代码文件名
-o后面是输出文件名
如果输出类型的是一种object file的话要用链接器链接
一切操作都要在命令行下完成,如果不习惯命令行操作不建议用
Ⅶ 汇编语言编程工具
windows 可以用轻松汇编开发
DOS下常用的工具MASM和TASM
Linux下的汇编工具: Linux下的汇编工具可谓百家争鸣,不像DOS下都要给MASM和TASM给控制了。但是Linux下每一种汇编工具都有很大的区别,要想全部掌握几乎是不可能的,下面我介绍几种常用的汇编工具,重点介绍NASM及其使用和语法。 1、GCC GCC其实是GNU的C语言产品,但它支持Inline Assemble,在GCC中inline assemble使用就像宏一样,但它比宏能更清楚更准确的表达机器的工作状态。 C是汇编编程的一个高度概括,它可以减少许多汇编中的麻烦,特别是在GCC这个C编译器中,assemble似乎起不了多大的作用。 2、GAS GAS是Linux各版本中基本的汇编工具,但它采用的是AT&T的语法标准与Intel的语法标准有很大的不同,对于DOS编程的我们来说,学习起来是非常困难的。当然如果要精通Linux下的汇编编程,学习GAS也是非常必要的,具体的语法标准可以参看Using GNU Assembler。 3、GASP GASP是GAS的扩展,它增强了GAS对宏的支持。 4、NASM NASM是linux中语法与DOS最为相像的一种汇编工具。虽说如此,它与MASM也是有着很大区别的。 l NASM的使用格式如下: Nasm �Cf -o 例如: Nasm -f elf hello.asm 将把hello.asm汇编成ELF object文件,而 Nasm -f bin hello.asm -o hello.com 会把hello.asm汇编成二进制可执行文件hello.com Nasm �Ch 将会列出NASM命令行的完整说明。 NASM不会有任何输出,除非有错误发生。 -f 在Linux下主要有aout和ELF两种,如果你不确定你的Linux系统应该用AOUT还是ELF,可以在NASM目录中输入 File nasm ,如果输出nasm: ELF 32-bit LSB executable i386 (386 and up) Version 1表示是ELF,如果输出nasm: Linux/i386 demand-paged executable (QMAGIC)表示是aout。
NASM与MASM的主要不同: 首先与linux系统一样,nasm是区分大小写的,Hello与hello将是不同的标识符,如果要汇编到DOS或OS/2,需要加入UPPERCASE参数。 其次,nasm中内存操作数都是以[ ]表示。 在MASM中 foo equ 1 bar dw 2 mov ax,foo mov ax,bar 将被汇编成完全不同的指令,虽然它们在MASM中的表达方式完全一样。而NASM完全避免了这种混乱,它使用的是这样的规则:所有对内存的操作都必须通过[ ]来实现。例如上例中对bar的操作就要写成如下形式 mov ax,[bar]。由此可见,nasm中对offset的使用也是没有必要的(nasm中无offset)。Nasm对[ ]的使用与masm也有所不同,所有的表达式都必须写在[ ]中,下面举两个例子来说明: Masm Nasm Mov ax,table[di] Mov ax,[table+di] Mov ax,es:[di] Mov ax,[es:di] Mov ax,[di]+1 Mov ax,[di+1] Nasm 中不存储变量类型,原因很简单masm中通过[ ]寻址方式的变量也必须要指定类型。Nasm中不支持LODS, MOVS, STOS, SCAS, CMPS, INS, OUTS,只支持lodsb、lodsw等已经指定类型的操作。Nasm中不再有assume操作,段地址完全取决于存入段寄存器的值。 关于NASM的使用方法及语法还可以参阅NASM使用手册。
至于下载,你就自己找就是了。很容易就找到了,我给你几个啊
轻松汇编:http://www.skycn.com/soft/20135.html#download
masm:http://download.pchome.net/development/linetools/download-10660.html
nasm:http://download.chinaunix.net/download/0008000/7201.shtml
gas:http://www.linuxsir.org/bbs/showthread.php?t=184320
gcc:http://download.chinaunix.net/download/0001000/69.shtml
Ⅷ 如何使用dosbox运行汇编语言程序
①安装好dosbox,然后找到“dosbox...options.bat”,双击它,(别急着点dosbox.exe)。
然后就可以看到输出的字符串
hello, world! @author: XXX