通常在前面可以看见类似如下的代码
DATA SEGMENT PARA PUBLIC 'DATA'
BLOCKDB **H,**H,**H,**H
DATAENDS
MOV BX,OFFSET BLOCK就是把BLOCK的第一个地址存入了BX
2.MOV A,[BX]就是把这个地址所指向的内容存入AX
由于存的是AX是字型,所以是讲BLOCK的前两个字节的内容以字的形式存入AX
3.INC BXINC BX。由于是字,所以偏移量应加2
3.MOV CX,99
定义了程序循环比较次数不超过99.由后面的DEC CXJNZ AGAIN配合使用
4.CMP AX,[BX]。将偏移量改变后的内容和改变之前已经移入AX的前一个数进行比较。
5.JG 为判断。如果前一个值大于后一个值,则跳转到NEXT。NEXT处为地址再次加2,如果没有超过99次,就拿前一个数比较再下一个数。
如果前一个值不大于后一个值,则将当前值存入AX,然后地址再次加2,如果没有超过99次,就拿这个数比较下一个数。
6.跳转到NEXT后则再次比较。
总的来说 这个程序是在BLOCK数据段以字的形式,找出其中最大的数。并把这个数存入MAX。
xxxx0是个十六进制数,最后一位是0的话转换为十进制定会被16整除, 不信你试试,这是因为前四位分别是16的倍数,最后一位是0,加起来还是16的倍数。堆栈是一种形象的说法,sp指针指向某一地址,成为栈底,数据从栈底开始向上保存,取出的时候按照后进先出的原则,实际是一种保护数据的方式,在微机原理中很重要。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)