疫情期间在家学汇编语言,有个题不太理解,恳请哪位老师看一下!
数据段中有一由N个元素组成的字数级,其中首地址为DEST,要在该数组中查找等于8888的字符,并将其序号送入INDEX单元。⋮
xor di,di ;DI清0
mov cx,N ;数组长度存入CX
movAX,8888H ;查找数据存入AX
AGAIN:
CMPax, DS:DEST ;比较是否与查找数据相同
jeFIND ;相同则跳转
adddi,2 ;修改指针
loop AGAIN ; 继续查找
FIND:
sar di,1 :把DI除以2才是序号
mov INDEX, di ;把序号送入指定单元
⋮
以上的sar di, 1 这条指令不太理解为什么要除以2才是序号。 因为序号di每次都是+2,所以实际需要除以2 那么问题来了,为什么di每次要加2呢? kof888 发表于 2022-5-21 11:19
因为序号di每次都是+2,所以实际需要除以2
还是不懂为啥要除以2才是序号? 因为段地址长度是2倍,所以要除以2,你只要知道要除以2就可以了,如果要深入理解汇编,要结合操作系统原理一起来看,如果要编程,则只需要理解汇编的内存原理就行,没必要过于纠结汇编
页:
[1]