簡體   English   中英

運行匯編程序時輸出奇怪

[英]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不會返回任何錯誤,但是一旦運行(使用DosBox),視頻輸出將僅顯示奇怪的ASCII符號而不是文本(intro,finale,finale2)。 在我修改它之前,它可以正常工作,以便在用戶想要/檢查輸入時重新啟動...

最后一行應該是

end

代替

end start

此外,清晰的axmov ds,ax 我建議寫一個main proc會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM