下面是一个程序,它假定有一个字符数组,从相对于数据段的地址零开始,其成员为(从左到右):
ABCDEVGTYO
字符串该程序检查数组的元素是否彼此不同。如果是,则在DL寄存器中设置值0,否则,在DL寄存器中设置值1。
的数据你能帮我解决这个问题吗?我试着解决它,但我不知道第二个选项(2)上写什么。
yqyhoc1h1#
简短回答:你不能这样。低级别的计算机并不真正理解什么是数组,因为它们不知道一段数据在哪里结束。考虑到你的例子:
myArray db "ABCDEVGTYO"
字符串有很多种方法可以写这个,所有这些都是等价的(尽管读起来要难得多)。这里有几个相同数据以不同方式写入的示例。
myArray dw 4241h,4443h,5645h,5447h,594Fh
myArray db 41h,42h,43h,44h,45h,56h,47h,54h,4Fh,59h
的数据无论你使用哪一个,程序都会运行得完全一样,因为CPU无法区分。但是考虑到你是如何开始写字符串的,确定它的长度是微不足道的。我相信MASM允许您使用以下语法:
myArray db "ABCDEVGTYO" myArrayEnd label byte ... mov ax, MyArrayEnd-MyArray ;gives you the length as a constant
型
1条答案
按热度按时间yqyhoc1h1#
简短回答:你不能这样。
低级别的计算机并不真正理解什么是数组,因为它们不知道一段数据在哪里结束。考虑到你的例子:
字符串
有很多种方法可以写这个,所有这些都是等价的(尽管读起来要难得多)。这里有几个相同数据以不同方式写入的示例。
的数据
无论你使用哪一个,程序都会运行得完全一样,因为CPU无法区分。
但是考虑到你是如何开始写字符串的,确定它的长度是微不足道的。我相信MASM允许您使用以下语法:
型