[英]Why does my code display rubbish?
當我想打印列表中的每個數字時,我的代碼顯示垃圾,有什么不對嗎? 輸出應如下所示:
GIVEN ARRAY是:2G; 4?PT 為什么這個垃圾
總數是:7
碼
ASSUME CS:CODE , DS : DATA, SS: STK
ORG 0000H
DATA SEGMENT
LIST DB 2,23,11,4,15,32,"$" ; Given Array with last element $ to indicate end
MESSAGE1 db "THE GIVEN ARRAY IS:$" ;message 1
MESSAGE2 db "THE TOTAL NUMBER IS:$" ;message 2
DATA ENDS
;stack segment
STK SEGMENT STACK
DB 512 DUP (?)
TOS LABEL WORD
STK ENDS
; code segment
CODE SEGMENT
ORG 2000H
START :
MOV DX, DATA
MOV DS, DX
MOV DX, STK
MOV SS, DX
MOV SP, OFFSET TOS
XOR AX, AX ; Clear register
XOR BX, BX ; Initialise index register
LEA DX, MESSAGE1
MOV AH, 9h
INT 21H
LEA SI , list
MOV CL,0
MOV AL,"$"
AGAIN:
CMP AL,[SI] ; look for end of list
JE over
MOV DL, LIST[BX] ; Move array numbers
ADD DX, 30H ; convert number to character.
MOV AH, 2 ;display the number at the screen
INT 21H
INC SI
INC BX
INC CL
Jmp AGAIN
over:
LEA DX, MESSAGE2
MOV AH, 9h
INT 21H
PUSH CX ; transfer cl to dl for int21/ah=2.
POP DX
ADD DX, 30H ; convert number to character.
MOV AH, 02H ; prints the character in dl.
INT 21H
MOV AH, 4CH ; exit.
INT 21H
CODE ENDS
END START
我想我知道為什么無論大於10的數字都顯示為字符,但如何讓它顯示為“13”這樣的數字不顯示為“=”?
LIST DB 2,23,11,4,15,32,"$"
您沒有意識到超過9的值包含多個數字。 這就是值2和4出現正確的原因; 顯示“2nd”和“4th”數字字符,但是數字23沒有字符。您需要將該數字顯示為2 和 3。
你需要的是一個正確的int to string函數來輸出ascii值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.