汇编题目,请高手帮忙

数组ARRAY定义如下ARRAY DW 1,2,3,4,5,6,7,8,9
ARYEND DW?
其中,ARYEND是计算数组长度而建立的符号地址,所需如下指令
MOV CX,(ARYEND-ARRAY)/2
汇编程序在汇编期间将计算出表达式的值而形成指令。
就上面的这些而言,有几个不懂的地方:
1:上面的ARRAY是指那定义了14个字节的数组的首地址吧?
2:ARYEND是什么作用啊?里面存储的是什么?他是地址吧?
3:CX的最终的内容是什么?
请高手帮忙解惑。

1、ARRAY是空间变量名,在语境下是数组的首地址,但是不是十四个字节,而是18个字节,9个字。DB定义字节,DW定义字(1字=2字节),DD定义双字。DW后的每一个十进制数都占用两个字节。
2、ARYEND同ARRAY,也是空间变量名,在语境下是数组的首地址。?表示其空间内存放的是随机数。
3、有一二可知,CX内存放的是十进制数的个数。两者之差是字节数,而一个十进制数占用一个字,及两个字节,所以除以二,得到十进制数的个数。追问

那是不是说:如果ARRAy的地址是1001H,那么ARTYEND的地址就是100EH,然后CX=(ARTYEND-ARRAY)/2=(100F-1001)/2=7 ?

追答

是9,不是7。其他的理解都是对的

追问

为什么是9啊??除出来不是7么??求解?

追答

如果ARRAY的地址是1001H,那么ARYEND的地址就不应该是100EH,因为这是放不下1到9这九个数字的,而且你此时说的地址只是偏移地址,不是物理地址

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-09
ARRAY类似与CODE SEGMENT
ARTYEND类似与CODE ENDS
CX=9
第2个回答  2012-04-11
array 定义了9个字数据,9*2=18个字节,地址从0到17,所以arrayend地址是18,所以 cx=(18-0)/2=9,也就是定义的字的个数,arrayend表示array的结束地址,里面存的数据没啥意义
相似回答