fly_dream 发表于 2011-5-2 22:11:02

满地打滚求助 汇编基础知识

本帖最后由 loop 于 2011-5-9 00:37 编辑

在DS已知情况下
问题1:
mov al, ;bx是16位寄存器而al是8位寄存器,请问这个怎么理解?
问题2:
mov al, ;这个怎么理解?是不是 ( a l) = ( [ ds: ( bx+si ) ] )的意思?如果是这个意思那么它又与问题1有什么不同呢?
问题3:
BX与 是不是可以类似像C/C++中的指针?
      先谢谢各位!


PS:请各位参与讨论,回答优秀者,进行威望奖励~

小乌龟 发表于 2011-5-2 22:47:14

本帖最后由 小乌龟 于 2011-5-2 23:09 编辑

关于第一个问题:
代表的是段地址为DS,偏移地址为bx的内存单元,而我们知道一个内存单元是用字节为单位的,所以mov al,是正确的。这个可以参考电子书95页“第五章 和loop指令”。

小乌龟 发表于 2011-5-2 22:58:07

本帖最后由 小乌龟 于 2011-5-2 23:00 编辑

关于问题2 呢,
mov al, ,应该是( a l) = ( ( ds*16+( bx+si ) )) ,这个在书中第97页“5.1 ”中,这个在甲鱼老师汇编视频第023集视频的第24:28分钟有讲解……
按我的理解,如果没有si的话,它和问题1中的mov al,是一样的意思……

小乌龟 发表于 2011-5-2 23:08:50

关于问题3,C学的不好,不好下判断,
我的感觉是更像c语言中的数组。

Y.H 发表于 2011-5-2 23:11:07

mov al,的意思就是把段地址为:DS 偏移地址为:BX+SI的内存单元中的内容传送给AL 偏移地址等于bx中的内容加上si中的内容
说错的地方请帮忙指点一下!

殇年已陌。 发表于 2011-5-3 10:14:40

嗯其实是这样的在数据寄存器当中分为ax,bx,cx,dx   这4种寄存器呢全部是16位的寄存器    这个没有问题吧在这4 种寄存器里面的又分为高8位的寄存器和低8位的寄存器而问题1中的al就是ax里面的低8位寄存器      高8位的寄存器分别是ahbh   chdh   低8位的寄存器是alblcldl    他们分别掌管这各自寄存器中的数据   特别声明之所以叫8位寄存器正是因为他们是8位的   一个低8位的数据+一个高8位的数据=一个16位的数据
    比如   al+ah=ax   很明了的
问题2 嗯大体的含义是将DS:中的数据放al 中   替换原有数据并保存
   bx和si全部都是一种间接的寻址方式   可以理解为偏移地址   至于为啥两个一起用
而且为什么跟上边的那个不一样这个我现在也迷糊了   希望有人能帮我们一起解答 疑惑

问题3呢   不好意思 我没学过c具体还是不清楚   

kithon 发表于 2011-5-3 10:36:42

1.你既然学过c, 那就相当于数组, bx相当于数组下标index. bx在这里是个变量,跟16位,8位没直接关系, 当然[ ]里面也可以是个常量idata..例如mov ax,
mov ax, 意思就是下标为bx的数组的值放到ax中, 这数组就是段地址为ds的那段内存
2. bx+si 可以这么理解,你要跑100米,bx =100, 但跑到100的时候没停下来,向前滑了1米,si =1, bx+si = 101..就是下标为101的数组的值.. 既然bx和bx+si可以表示同一个意思,为什么还要搞这么麻烦呢, 是有用处的 比如在结构体中有一个字符串
struct cc { char *str = "fishc";};ds相当于cc的起始地址,bx相当于字符串的起始地址,我们想得到fishc里的c的地址, 当然还需要一个下标,于是si 就诞生了U see ?

hhb14056 发表于 2011-5-5 23:58:39

回贴是一种美德

a513247209 发表于 2011-5-8 13:47:12

高手解答,我是菜鸟的

shichuahua 发表于 2011-5-9 19:02:18

moshushi 发表于 2011-5-9 21:50:06

在DS已知情况下
问题1:
mov al, ;bx是16位寄存器而al是8位寄存器,请问这个怎么理解?
答:把偏移地址中的数据的后8位 放在寄存器al
问题2:
mov al, ;这个怎么理解?是不是 ( a l) = ( [ ds: ( bx+si ) ] )的意思?如果是这个意思那么它又与问题1有什么不同呢?
答:这个跟第一题是一样的,这个寻址的方式更灵活。
问题3:
BX与 是不是可以类似像C/C++中的指针?
      先谢谢各位!
答:没有学C/C++,不会了


页: [1]
查看完整版本: 满地打滚求助 汇编基础知识