麻烦大师们指点一下哈。 假设VAL1和VAL2为变量,LAB为标号,试指出下列指令的错误

1、ADD VAL1,VAL22、SUB AL,VAL13、JMP LAB[SI]4、JNZ VAL15、JMP NEAR LAB
2024年11月30日 10:43
有2个网友回答
网友(1):

首先,第一步是,将VAL2和VAL1的值加起来放到VAL1中;
其次,用AL中的值减去VAL1中的值放到AL中;
第三步是跳转到标号地址SI执行;
第四步是通过判断ZF是否为0来确定是否要跳转,也就是指令SUB AL,VAL1的结果不等于0的话,就跳转到VAL1(?很奇怪,为什么跳转到VAL1呢?是地址吗?)如果SUB AL,VAL1的结果是0,也就是说VAL1的值已经和AL的值相等了,就进行第五步,段内跳转到去执行标号LAB的地址。
我也不是很清楚这几个语句要表达的意思,上面是我的理解,你看看。

网友(2):

变量时代表存储单元的地址
1、ADD VAL1,VAL2 两个地址变量可以相减,不能相加
2、SUB AL,VAL1 数据类型不匹配,没法运算
3、JMP LAB[SI] 标号其实就是表明地址的,只能单独用,不能用来加【SI】
4、JNZ VAL1 后面不应该是变量,而应该是一个地址标号
5、JMP NEAR LAB 对