. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  SS和DS的疑问  [已解决] 回复[ 4次 ]   点击[ 357次 ]  
caroline0712
[帖 主]   [ 发表时间:2009-03-13 09:43 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-03-11 10:14
问题:查看在汇编程序中的数据段中存储的内容时,为什么内容是在SS段中查看到的?原理是什么?

怀疑的原因可能是:DS只是汇编语言识别的,机器语言并不执行,机器语言只根据CS:IP决定运行到哪儿,但是为什么程序会把它装到SS段中呢?

如果描述不清 根据这个程序说明:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;程序部分
DATAS SEGMENT
    DB 'SS&DS'  
DATAS ENDS

STACKS SEGMENT
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;调试结果
-R
AX=0000  BX=0000  CX=0019  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=144E  ES=144E  SS=145E  CS=145F  IP=0000   NV UP EI PL NZ NA PO NC
145F:0000 B85E14        MOV     AX,145E
-D DS:0
144E:0000  CD 20 FF 9F 00 9A F0 FE-1D F0 4F 03 3A 0E 8A 03   . ........O.:...
144E:0010  3A 0E 17 03 3A 0E 29 0E-01 01 01 00 02 FF FF FF   :...:.).........
144E:0020  FF FF FF FF FF FF FF FF-FF FF FF FF E7 13 4C 01   ..............L.
144E:0030  FA 12 14 00 18 00 4E 14-FF FF FF FF 00 00 00 00   ......N.........
144E:0040  05 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
144E:0050  CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20   .!...........
144E:0060  20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20           .....
144E:0070  20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00           ........
-D SS:0
145E:0000  53 53 26 44 53 00 00 00-00 00 00 00 00 00 00 00   SS&DS...........
145E:0010  B8 5E 14 8E D8 B4 4C CD-21 00 00 00 00 00 00 00   .^....L.!.......
145E:0020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
145E:0030  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
145E:0040  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
145E:0050  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
145E:0060  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
145E:0070  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;疑问部分:查看DS中的内容,为什么在SS中查看
;完毕

请回答  谢谢  不胜感激
abob
[第1楼]   [ 回复时间:2009-03-13 10:18 ]   [引用]   [回复]   [ top ] 
荣誉值:169
信誉值:0
注册日期:2008-08-19 16:07
DS只是汇编语言识别的,机器语言并不执行,机器语言只根据CS:IP决定运行到哪儿,但是为什么程序会把它装到SS段中呢? 
-----------------
ax ds等寄存器是真实存在的,机器语言也一样会调用ds ax等寄存器,不过汇编的时候用ds ax表示,二进制会用数据编号找他们。

看楼主的帖子,写.asm文件应该是第四章才学到了,楼主是有一定的汇编基础了。我觉得楼主还是按下心来好好领悟书上的内容,按照常理来说有汇编基础的再学这本书速度往往很快,但同时也会忽略掉一些细节,毕竟每个人都会觉得既然我会了就没有必要再浪费时间了~_~

楼主说的问题是第四章的知识,如debug加载后ds等寄存器值的意义,PSP的知识。等按进度学到了就明白了。
abob
[第2楼]   [ 回复时间:2009-03-13 10:21 ]   [引用]   [回复]   [ top ] 
荣誉值:169
信誉值:0
注册日期:2008-08-19 16:07
另外我觉得王爽老师这本书的线索非常好,按照这个线索学习应该会有些的收获~

比如研究问题的方法~
caroline0712
[第3楼]   [ 回复时间:2009-03-13 11:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-03-11 10:14
回复:[第1楼]
------------------
感谢你的回答  我刚才把第四章实验部分匆匆又看了一遍
初步明白了为什么这个程序中查看DS中的内容要在DS+10h:0中查看,他只是在DS+10H中存放的程序,如果第一段声明的是SS段 DS中的内容就不在DS+10h中了。
再次感谢
caroline0712
[第4楼]   [ 回复时间:2009-03-13 13:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-03-11 10:14
此贴由 贴主 于 [ 2009-03-13 13:05 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved