253009514 发表于 2012-6-28 01:08:18

试验第七 求解释

mov ax,data
mov 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个小时了 还没弄懂

253009514 发表于 2012-6-28 01:16:40

ss:sp ..好吧 我打错了

253009514 发表于 2012-6-28 01:18:20

好吧 我想我自己应该也懂了, 我一直以为idata的值会改变si的值 我发现我2了

253009514 发表于 2012-6-28 01:19:44

那为什么es:si这个两个寄存器配合,为什么不是es:ip呢 这个还没搞懂 求大虾 解释

253009514 发表于 2012-6-28 01:33:18

MS都是我自问自答 。。我明白了 自己定义es:作为存放数据的内存空间 请允许我犯2.下 - -#

黑___猫 发表于 2012-6-28 01:38:58

我看你全是在自问自答,IP是指令的偏移地址,和CS配合,这样指到的地址,计算机会让它以代码的方式执行,每执行一条指令IP都会变动,如果你es:ip,应该会编译出错,我也没试过,你试一下
计算机认识 es:,es:,es:es:,es:,es:,es:,es:,es:
页: [1]
查看完整版本: 试验第七 求解释