注册 登录
编程论坛 汇编论坛

王爽 汇编语言中问题

wxyww205127 发布于 2012-10-23 15:56, 688 次点击
在第二版 P51 讲数据段时,有这么一段话:
“比如,我们将123B0H-123BAH的内存单元定义为数据段。我们现在要累加这个数据段中的前3个单元中的数据,代码如下:
            mov ax,123BH
            mov ds,ax     ;将123B送入ds中,作为数据的段地址
            mov al,0   ;用al存放累加数据
            add al,[0]  ;将数据段第一个单元(偏移地址0)中的数值加到al中
            add al,[1]  ;将数据段第二个单元(偏移地址1)中的数值加到al中
            add al,[2]  ;将数据段第三个单元(偏移地址2)中的数值加到al中”
看到这,本人有所不解,[0]和[1]、[2]不是指的字型数据码?字型数据不是占两个内存单元即高位和地位吗?如何能存放至只是低位的al中?
本人新手,刚学汇编,请指教。
7 回复
#2
zklhp2012-10-23 16:18
[0]和[1]、[2]不是指的字型数据码?

加方括号表示寻址 指的是地址为1的内存中的变量 至于具体是多大 要么用ptr伪指令 要么可以根据前面的寄存器定

这是基础知识 认真看书罢
#3
有容就大2012-10-23 16:45
add al, [0] 相当于 add al, byte ptr [0].
add ax, [0] 相当于 add ax, word ptr [0].
以此类推 书上有讲吧。
#4
青春无限2012-10-23 17:01
学习
#5
wxyww2051272012-10-23 18:03
你们说的太高深了,我还没学到。
现在我知道了,高位对应高位,低位对应低位。
谢谢各位。
#6
matengfei2012-10-25 19:09
add al,[0]
add al,[1]   
add al,[2]
al是8位数据,所以[0],[1],[2]表示的都是字节单元。
如果说
add ax,[0]
add ax,[1]   
add ax,[2]
ax是16位数据,那么[0],[1],[2]表示的都是字单元。
                  
#7
无敌小默然2012-11-07 10:14
会溢出
#8
远离的人2014-10-08 16:43
内存单元中字符的存储有两种,一般像windows和linux等系统都采用小端方式存储,而UNIX系统采用大端方式存储,比如:1234在windows下被存储为[34][12],而在UNIX下则被存储为[12][34]。
1