【发布时间】:2018-02-28 05:07:11
【问题描述】:
附件: 文件 dosbox_003.png (5.722 KB) 编写一个 NASM,它将:
在一行中显示您的姓名。 (使用 int 21h,函数 9。回车和换行的字符分别为 0Dh 和 0Ah。) 在下一行,显示一个提示(再次使用 int 21h, function9)并从键盘读取三个字符(使用 int 21h, fcn 1)。将字符存储在适当标记的字节变量中。 打印三个字符,每行一个,(根据您的实现方式,使用 int 21h、函数 9 或函数 2,您可以选择。) 使用 NASM 组装您的程序并使用 DOSBox 执行它。
使用命令提示符组装
给定这段代码(错误加粗,行高亮) 我有这些错误
C:\NASM>nasm bal-lab2.asm -o bal-lab2.com
bal-lab2.asm:5: error: attempt to define a local label before any non-local
labels
bal-lab2.asm:5: error: parser: instruction expected
bal-lab2.asm:6: error: attempt to define a local label before any non-local
labels
bal-lab2.asm:6: error: parser: instruction expected
bal-lab2.asm:7: warning: label alone on a line without a colon might be in
error [-w+orphan-labels]
bal-lab2.asm:7: error: attempt to define a local label before any non-local
labels
bal-lab2.asm:17: warning: label alone on a line without a colon might be in
error [-w+orphan-labels]
bal-lab2.asm:18: error: parser: instruction expected
bal-lab2.asm:127: error: symbol `main' redefined
bal-lab2.asm:127: error: parser: instruction expected
bal-lab2.asm:128: error: parser: instruction expected
使用此代码
;ff
;ff
;ff
.model small line ***LINE 5***
.stack 100h ***LINE 6***
.data ***LINE 7***
nameString db 'my name here $' ;replace by your name
prompt1 db 'Enter first character : $' ;ask for character
prompt2 db 'Enter second character : $' ;ask for character
prompt3 db 'Enter third character : $' ;ask for character
character1 DB ? ;memory to store character
character2 DB ? ;memory to store character
character3 DB ? ;memory to store character
.code ***LINE 17**
main proc ***LINE 18***
mov ax,@data ;move data address to ax
mov ds,ax ;move ax to data segment
lea dx , nameString ;move content to dx
mov ah,9 ;ask to print array of string
int 21h
mov dx,10 ;print \n
mov ah,2
int 21h
mov dx,13 ;cursor at first position
mov ah,2
int 21h
lea dx , prompt1 ;if use lea no need to use offset
mov ah,9 ;print prompt
int 21h
;ask for character input
mov ah,1
int 21h
mov character1,al ; move to labled memory
mov dx,10 ;print \n
mov ah,2
int 21h
mov dx,13 ;cursor at first position
mov ah,2
int 21h
lea dx , prompt2 ;if use lea no need to use offset
mov ah,9 ;print prompt
int 21h
;ask for character input
mov ah,1
int 21h
mov character2,al ; move to labled memory
mov dx,10 ;print \n
mov ah,2
int 21h
mov dx,13 ;cursor at first position
mov ah,2
int 21h
lea dx , prompt3 ;if use lea no need to use offset
mov ah,9 ;print prompt
int 21h
;ask for character input
mov ah,1
int 21h
mov character3,al ; move to labled memory
mov dx,10 ;print \n
mov ah,2
int 21h
mov dx,13 ;cursor at first position
mov ah,2
int 21h
mov dl,character1 ;move character value to dl for print
mov ah,2
int 21h
mov dx,10 ;print \n
mov ah,2
int 21h
mov dx,13 ;cursor at first position
mov ah,2
int 21h
mov dl,character2 ;move character value to dl for print
mov ah,2
int 21h
mov dx,10 ;print \n
mov ah,2
int 21h
mov dx,13 ;cursor at first position
mov ah,2
int 21h
mov dl,character3 ;move character value to dl for print
mov ah,2
int 21h
mov ah,4ch
int 21h
main endp ***LINE 127***
end main ***LINE 128***
错误被突出显示,线条也被突出显示 感谢任何帮助,我对汇编语言很陌生
【问题讨论】:
-
您的代码似乎采用 MASM 语法(不是 NASM)。 NASM 无法处理 MASM 语法。您需要使用 MASM(或兼容的工具,如 TASM 甚至 JWASM)来组装此文件。否则,您必须将其转换为 NASM 语法。