【发布时间】:2021-05-01 13:44:18
【问题描述】:
我对 NASM 还很陌生,我已经想大吃一惊了,因为我不知道为什么我一直收到此错误“预期的指令”第 14 行。是我的编译器还是我的代码。请帮助我,我已经做了几个小时了,我现在不知道该怎么办。
section .data
CELC DB ?
FARH DB ?
MSG1 DB 'INPUT VALUE OF CENTIGRADE','$'
MSG DB 'EQUIVALENT FARHRENEHEIT IS','$'
section .text
global _start
section .code
_start:
ASSUME CS:CSEG, DS:DSEG
MOV AX,DSEG
MOV DS,AX ; INITIALIZE DATA SEGMENT
LEA DX,MSG1
MOV AH, 01H
INT 21H ; DISPLAY "INPUT VALUE IN CELC"
MOV AH, 01H
INT 21H ; INPUT VALUE IN CELC
MOV CELC,AL ; MOVE THE INPUT VALUE TO 'CELC'
MOV AL,CELC
MOV CL,09H
MOV CH,00H
MUL CL ; AX=9*CELC
MOV CL,05H
DIV CL ; AL=AX/CL=(9*CELC)/5
ADD AL,20H ; ADD 20H=32 TO AL TO GET FAHR
MOV FARH, AL ; FAHR=(9*CELC)/5+32
MOV AH,4CH
INT 21H
【问题讨论】:
-
此代码采用 MASM 语法,因此需要转换为 NASM 语法。另一种选择是使用 MASM 或 JWASM(Linux/Windows//MacOS/DOS 等上可用的 MASM 的开源替代品)组装它。请注意,此代码旨在在 DOS 下运行。不要指望它会在 Linux 或 64 位 Windows 上运行。由于有 NTVDM 组件,它可以在 32 位 Windows 上运行,但它仍然是一个 DOS 程序。
-
如果您希望此代码在 Linux/64 位 Windows/OSX 或其他一些操作系统中运行,您将需要一个模拟器。 DOSBox 是一种在虚拟 x86 环境中运行 DOS 程序的流行工具。