当我在数据段中添加“最大编号为:$”作为味精时,我没有得到结果

时间:2019-08-19 19:10:16

标签: assembly x86-16 emu8086

enter image description here

serverless.yml

如果我不包括这些行,则我得到9作为最大的行。但是我如果包括该提示显示,则输出为“ a”。为什么? (如果我不写东西,那不会让我上传...................................... ................................................... ................................................... ................)

msg db 'The largest no is:$'

lea dx, msg
mov ah, 9
int 21h

1 个答案:

答案 0 :(得分:2)

您的代码溢出了字节array

首先,您通过al加载mov al, [si]来保存起始值。

然后循环引用[si+1]十次迭代,这意味着您将alarray+1array+11进行比较。并且array+11拥有字符“ T”,并被捕获为最高字符,因此当您在“ T”中添加48时,您会得到一个有趣的字符。

如果省略msg,则array+11最有可能为零,因此不会被视为最高。