. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->数据处理的两个基本问题
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第八章8.1偏移地址你们全会吗?  [待解决] 回复[ 4次 ]   点击[ 427次 ]  
wenliyun76
[帖 主]   [ 发表时间:2014-08-27 20:49 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-08-25 09:22
题目要求:用div计算DATA段叶第一个数据除以第二个数据后的结果,商存在第三个数据的储存单元中。
data segment 
dd 100001
dw 100
dw 0
书里答案:mov ax.data
          mov ds,ax
          mov ax,ds:[0]
          mov dx,ds:[2]
          div word ptr ds:[4]
          mov ds:[6],ax

  这里【0】【2】【4】【6】怎么数出来的,并且里面的内存数值是什么?
gyq
[第1楼]   [ 回复时间:2014-08-28 02:04 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25
学到第八章了,内存长度不会数的话,有点说不过去了哈。

一个字节占一个存储单元,两个字节是一个字,两个字是一个双字。

dd,double word或者理解成define double,定义双字,占4个字节。
dw,define word,定义字。
db,define byte,定义字节。

数据段从零开始数,ds:[0],也就是起始存储数据的地方,同时也是dd 100001存的地方。这个占4个字节。高位两个字节存储是从ds:[2]开始。
ds:[4],也就是dw 100 存储的地方,占两个字节。
接下来,dw 0 这个就是ds:[6] 了。

建议:
内存里面的数据,楼主可以把程序编译连接了加载上去看,相信如果之前的实践内容都敲过,debug下查看这点东西会很简单的。自己通过实践看懂了,学着也踏实。
wenliyun76
[第2楼]   [ 回复时间:2014-08-28 11:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-08-25 09:22
看到DEBUG里全是两个字两个字排列的,就是没懂啊,我看前面两遍也没理解 ,那个表格两个字母或数一个格下面再一个格又两个数你说的一个字节占一个内存是不是说一个内存单元就是一个偏移地址呢?
那4个字节不就成了0-3偏移地址吗?{2】怎么又出到100?
gyq
[第3楼]   [ 回复时间:2014-08-28 16:56 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25
dd 100001 
dw 100 
dw 0 

100001 = 186A1H
100    = 64H

加载到内存(在我的机子上存放的段地址是1409H):
1409:0000  A1 86 01 00 64 00 00 00-00 00 00 00 00 00 00 00

(内存中显示空格隔开的两位十六进制数是每个内存单元的内容,每个内存单元是一个字节,八位二进制数,正好用两位十六进制表示。)
第一个定义的双字型数据,dd 100001 ,在内存中存储占四个字节[0]、[1]、[2]、[3],数值分别是:A1 86 01 00 。内存中存放数据低位在前,高位在后。所以这个数的值是 00 01 86 A1 H = 100001。
第二个定义的字型数据,dw 100 ,在内存中存储占两个字节[4]、[5],数值分别是:64 00 。内存中存放数据低位在前,高位在后。所以这个数的值是 00 64 H = 100。

如果以上内容看不懂的话,建议楼主去把第二章的检测点和实验重新实践一遍。假若楼主没有实践过,那就赶紧去实践,不要耽误后面的学习。
wenliyun76
[第4楼]   [ 回复时间:2014-08-29 10:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-08-25 09:22
谢谢!明白了!
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved