试验第七 求解释
mov ax,datamov ds,ax
mov ax,table
mov es,ax
mov bx,0 ;data中数据定位(和idata结合,用于年份和收入)
mov si,0 ;table中定位(和idata给合用于定位存放数据的相对位置)
mov di,0 ;data中用于得到员工数
mov cx,21
s:
mov ax,ds:
mov es:,ax
mov ax,ds:
mov es:,ax
mov ax,ds:
mov dx,ds:
mov es:,ax
mov es:,dx
mov ax,ds:
mov es:,ax
mov ax,es:
mov dx,es:
divword ptr es:
mov es:,ax
add si,16
add di,2
add bx,4
loop s
mov ax,4c00h
int 21h
code ends
end start
、、、
这段代码 为什么定义 add si,16就可以定义行,我明白一行16个字节我不明白他为什么执行一次后 可以跳转到1403:0010
而且es为什么是和si来配合 我一直以为es:ip
我记得书上是ds:ip ss:ip这样配合
说的有点混乱 一直卡壳在这个问题上 都6个小时了 还没弄懂
ss:sp ..好吧 我打错了 好吧 我想我自己应该也懂了, 我一直以为idata的值会改变si的值 我发现我2了 那为什么es:si这个两个寄存器配合,为什么不是es:ip呢 这个还没搞懂 求大虾 解释 MS都是我自问自答 。。我明白了 自己定义es:作为存放数据的内存空间 请允许我犯2.下 - -# 我看你全是在自问自答,IP是指令的偏移地址,和CS配合,这样指到的地址,计算机会让它以代码的方式执行,每执行一条指令IP都会变动,如果你es:ip,应该会编译出错,我也没试过,你试一下
计算机认识 es:,es:,es:es:,es:,es:,es:,es:,es:
页:
[1]