运行 汇编程序时的奇怪输出
Strange output when running assembly program
.model small
.stack
.data
intro db 10,13,"Inserisci un carattere: ",'$'
finale db 10,13,"Il carattere inserito e' una lettera maiuscola.",'$'
finale2 db 10,13,"Il carattere inserito e' una lettera minuscola.",'$'
finale3 db 10,13,"Il carattere inserito e' un carattere speciale.",'$'
finale4 db 10,13,"Il carattere inserito e' una cifra numerica.",'$'
errore db 10,13,"Il carattere inserito non rientra nel range verificabile.",'$'
domanda db 10,13,"Inserire un nuovo carattere? [s/n]: ",'$'
var1 db ?
risp db ?
.code
mov ax,@data
mov ds,ax
start:
lea dx,intro
mov ah,09h
int 21h
mov ah,01h
int 21h
mov var1,al
cmp var1,32
JL errore1
cmp var1,125
JG errore1
cmp var1,47
JLE speciale
cmp var1,57
JLE numero
cmp var1,64
JLE speciale
cmp var1,90
JLE maiuscola
cmp var1,96
JLE speciale
cmp var1,122
JLE minuscola
cmp var1,125
JLE speciale
middle:
JMP start
maiuscola:
lea dx,finale
mov ah,09h
int 21h
jmp domanda1
minuscola:
lea dx,finale2
mov ah,09h
int 21h
jmp domanda1
speciale:
lea dx,finale3
mov ah,09h
int 21h
jmp domanda1
numero:
lea dx,finale4
mov ah,09h
int 21h
jmp domanda1
domanda1:
lea dx,domanda
mov ah,09h
int 21h
mov ah,01h
int 21h
mov risp,al
cmp risp,115
je middle
jmp fine
fine:
mov ah,4ch
int 21h
errore1:
lea dx,errore
mov ah,09h
int 21h
JMP fine
end start
使用 tasm 和 tlink returns 没有错误,但是一旦我 运行 它(使用 DosBox),视频输出只显示奇怪的 ASCII 符号而不是文本(介绍、结局、结局 2)。
在我修改它之前它工作得很好,以便在用户想要 to/check 输入时重新启动...
最后一行应该是
end
而不是
end start
此外,清除mov ds,ax
后的ax
。
我建议写一个 main proc
会更好。
.model small
.stack
.data
intro db 10,13,"Inserisci un carattere: ",'$'
finale db 10,13,"Il carattere inserito e' una lettera maiuscola.",'$'
finale2 db 10,13,"Il carattere inserito e' una lettera minuscola.",'$'
finale3 db 10,13,"Il carattere inserito e' un carattere speciale.",'$'
finale4 db 10,13,"Il carattere inserito e' una cifra numerica.",'$'
errore db 10,13,"Il carattere inserito non rientra nel range verificabile.",'$'
domanda db 10,13,"Inserire un nuovo carattere? [s/n]: ",'$'
var1 db ?
risp db ?
.code
mov ax,@data
mov ds,ax
start:
lea dx,intro
mov ah,09h
int 21h
mov ah,01h
int 21h
mov var1,al
cmp var1,32
JL errore1
cmp var1,125
JG errore1
cmp var1,47
JLE speciale
cmp var1,57
JLE numero
cmp var1,64
JLE speciale
cmp var1,90
JLE maiuscola
cmp var1,96
JLE speciale
cmp var1,122
JLE minuscola
cmp var1,125
JLE speciale
middle:
JMP start
maiuscola:
lea dx,finale
mov ah,09h
int 21h
jmp domanda1
minuscola:
lea dx,finale2
mov ah,09h
int 21h
jmp domanda1
speciale:
lea dx,finale3
mov ah,09h
int 21h
jmp domanda1
numero:
lea dx,finale4
mov ah,09h
int 21h
jmp domanda1
domanda1:
lea dx,domanda
mov ah,09h
int 21h
mov ah,01h
int 21h
mov risp,al
cmp risp,115
je middle
jmp fine
fine:
mov ah,4ch
int 21h
errore1:
lea dx,errore
mov ah,09h
int 21h
JMP fine
end start
使用 tasm 和 tlink returns 没有错误,但是一旦我 运行 它(使用 DosBox),视频输出只显示奇怪的 ASCII 符号而不是文本(介绍、结局、结局 2)。 在我修改它之前它工作得很好,以便在用户想要 to/check 输入时重新启动...
最后一行应该是
end
而不是
end start
此外,清除mov ds,ax
后的ax
。
我建议写一个 main proc
会更好。