mr_*_*nyo 5 x86 assembly nasm emu8086
大家晚上好。我刚刚开始学习汇编语言,并且在网上找到了非常好的示例可以遵循。有人建议我使用 NASM 开始学习,但我发现的例子我看到他们使用 8086 汇编器。当我遵循这些示例时,我注意到如果我使用 NASM,它们不会在 Linux 终端上运行,但是如果我安装了 8086 汇编器模拟器,它确实可以工作。
我的问题是:NASM 和 8086 汇编器有什么区别吗?对我来说它们应该是同一件事,因为它是汇编代码。如果没有,有谁可以解释一下两者之间有什么区别吗?以及为什么它们不在 NASM 和 8086 上运行相同的代码
这是我跟踪的代码,它确实在 8086 汇编器上运行,但不在 Linux 上的 NASM 上运行
DATA SEGMENT
NUM1 DB ?
NUM2 DB ?
RESULT DB ?
MSG1 DB 10,13,"ENTER FIRST NUMBER TO ADD : $"
MSG2 DB 10,13,"ENTER SECOND NUMBER TO ADD : $"
MSG3 DB 10,13,"RESULT OF ADDITION IS : $"
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV NUM1,AL
LEA DX,MSG2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV NUM2,AL
ADD AL,NUM1
MOV RESULT,AL
MOV AH,0
AAA
ADD AH,30H
ADD AL,30H
MOV BX,AX
LEA DX,MSG3
MOV AH,9
INT 21H
MOV AH,2
MOV DL,BH
INT 21H
MOV AH,2
MOV DL,BL
INT 21H
MOV AH,4CH
INT 21H
ENDS
END START
Run Code Online (Sandbox Code Playgroud)
谢谢并希望您度过一个美好的夜晚。