focus on linux, c/c++, lua

内存分配中的高高低低

先看一段代码:

DATE SEGMENT
DA1 DW 1234H
DA2 DB 56H,78H
DATA ENDS



MOV AX,DATA
MOV DS,AX
MOV DI,OFFSET DA1
MOV BX,OFFSET DA2
MOV AL,[DI]
ADD AL,[DI+2]

再看解释与结果:(by cnzdgs@csdn

MOV AX,DATA
MOV DS,AX
; 初始化DS,使其指向DATA段
MOV DI,OFFSET DA1
MOV BX,OFFSET DA2
; 让DI指向DA1,BX指向DA2,DI=0,BX=2
MOV AL,[DI]
; 将DI指向的内存中的1字节数据传给AL,也就是把DA1的低字节给AL,因为低位在前,所以是34H
ADD AL,[DI+2]
; 将DI+2指向的内存中的1字节数据与AL向加,结果放在AL里面,34H+56H=8AH

再看我的图示:

内存地址:                                                        内存内容:

0x00000000                                                      0x34 (dword的地位)

0x00000001                                                      0x12 (dword的高位)

0x00000002                                                      0x56

0x00000003                                                      0x78


posted on 2010-10-20 10:11 zuhd 阅读(388) 评论(0)  编辑 收藏 引用 所属分类: my tips


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理