程序解释(微型计算机8086的通用指令)

来源:百度知道 编辑:UC知道 时间:2024/06/15 08:56:51
进行99次比较的循环程序,每一循环中都用了比较指令,然后用转移指令来判别大小,循环开始前置初值。程序段如下,哪个高手帮忙解释一下啊,最好逐条哦
MOV BX,OFFSET BLOCK
MOV AX,[BX]
INC BX
INC BX
MOV CX,99
AGAIN:CMP AX,[BX]
JG NEXT
MOV AX,[BX]
NEXT: INC BX
INC BX
DEC CX
JNZ AGAIN
MOV MAX,AX
HLT
先谢谢了 会加分的

1.
OFFSET BLOCK是指在前面数据段定义的名为BLOCK的一段数据的起始便宜地址
通常在前面可以看见类似如下的代码
DATA SEGMENT PARA PUBLIC 'DATA'
BLOCK DB **H,**H,**H,**H
DATA ENDS

MOV BX,OFFSET BLOCK就是把BLOCK的第一个地址存入了BX
2.MOV A,[BX]就是把这个地址所指向的内容存入AX
由于存的是AX是字型,所以是讲BLOCK的前两个字节的内容以字的形式存入AX
3.INC BX;INC BX。由于是字,所以偏移量应加2
3.MOV CX,99
定义了程序循环比较次数不超过99.由后面的DEC CX;JNZ AGAIN配合使用
4.CMP AX,[BX]。将偏移量改变后的内容和改变之前已经移入AX的前一个数进行比较。
5.JG 为判断。如果前一个值大于后一个值,则跳转到NEXT。NEXT处为地址再次加2,如果没有超过99次,就拿前一个数比较再下一个数。
如果前一个值不大于后一个值,则将当前值存入AX,然后地址再次加2,如果没有超过99次,就拿这个数比较下一个数。
6.跳转到NEXT后则再次比较。

总的来说 这个程序是在BLOCK数据段以字的形式,找出其中最大的数。并把这个数存入MAX。