. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
主题 : :  初学汇编,通过DEBUG改变段地址求寄存器的值理解不了?  [待解决] 回复[ 14次 ]   点击[ 3496次 ]  
abcabc
[帖 主] [ 发表时间:2007-06-25 19:39 ] 
荣誉值:24
信誉值:3
注册日期:2007-06-06 11:53
检测点3.1  
  (1)在Debug中用“d   0:0   1f”查看内存,结果如下:  
  0000:0000   70   80   F0   30   EF   60   30   E2-00   80   80   12   66   20   22   60  
  0000:0010   62   26   E6   D6   CC   2E   3C   3B-AB   BA   00   00   26   06   66   88  
  下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值。  
  MOV   AX,1  
  MOV   DS,AX  
  MOV   AX,[0000]         AX=___  
  MOV   BX,[0001]         BX=_____  
  MOV   AX,BX                 AX=___  
  MOV   AX,[0000]         AX=___  
  MOV   BX,[0002]         BX=_____  
  ADD   AX,BX                 AX=___  
  ADD   AX,[0004]         AX=___  
  MOV   AX,0                   AX=___  
  MOV   AL,[0002]         AX=___  
  MOV   BX,0                   BX=_____  
  MOV   BL,[000C]         BX=_____  
  ADD   AL,BL                 AX=___  
   
   
  (指令执行时,DS=0001吗?这个段地址与题目中d   0:0   1f给的内存信息有关吗?)
psdugujian
[第4楼] [ 回复时间:2008-06-09 07:35 ] 
荣誉值:0
信誉值:0
注册日期:2008-06-06 08:42
mov ax,1           //ax = 1
mov ds,ax          //ds = 1,  ax = 1
mov ax,[0000]      //ds = 1,  ax = 2662    ax的值等于段地址ds乘以10加上偏移地址[0000]处的值,
                                           因为ax是16位,所以ax=2662;
mov bx,[0001]      //ds = 1,  bx = e626    原因同上;
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved