鱼C论坛

 找回密码
 立即注册
查看: 2162|回复: 5

试验第七 求解释

[复制链接]
发表于 2012-6-28 01:08:18 | 显示全部楼层 |阅读模式
1鱼币
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:[bx]
mov es:[si],ax
mov ax,ds:[bx+2]
mov es:[si+2],ax
mov ax,ds:[bx+54H]
mov dx,ds:[bx+56H]
mov es:[si+5],ax
mov es:[si+7],dx
mov ax,ds:[di+0A8H]
mov es:[si+10],ax
mov ax,es:[si+5]
mov dx,es:[si+7]
div  word ptr es:[si+10]
mov es:[si+13],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个小时了 还没弄懂

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-6-28 01:16:40 | 显示全部楼层
ss:sp ..好吧 我打错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-28 01:18:20 | 显示全部楼层
好吧 我想我自己应该也懂了, 我一直以为idata的值会改变si的值 我发现我2了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-28 01:19:44 | 显示全部楼层
那为什么es:si这个两个寄存器配合,为什么不是es:ip呢 这个还没搞懂 求大虾 解释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-28 01:33:18 | 显示全部楼层
MS都是我自问自答 。。我明白了 自己定义es:[si]作为存放数据的内存空间 请允许我犯2.下 - -#
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-28 01:38:58 | 显示全部楼层
我看你全是在自问自答,IP是指令的偏移地址,和CS配合,这样指到的地址,计算机会让它以代码的方式执行,每执行一条指令IP都会变动,如果你es:ip,应该会编译出错,我也没试过,你试一下
计算机认识 es:[di],es:[si],es:[bx]es:[bx+si],es:[bx+di],es:[bx+si+di],es:[bx+idata],es:[si+idata],es:[di+idata]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-20 09:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表