gpt4 book ai didi

assembly - 为什么我的代码显示垃圾?

转载 作者:行者123 更新时间:2023-12-03 22:22:30 25 4
gpt4 key购买 nike

当我还想打印列表中的每个数字时,我的代码显示垃圾,有什么问题吗?输出应如下所示:

给定的数组是: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 到字符串 函数将值输出为 ascii。

关于assembly - 为什么我的代码显示垃圾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4953506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com