. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  对于p175的实验9的debug调试有疑问  [已解决] 回复[ 2次 ]   点击[ 280次 ]  
heicai
[帖 主]   [ 发表时间:2007-08-18 10:23 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:5
注册日期:2007-08-08 14:36
assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start:
        mov ax,data
        mov ds,ax
        mov ax,0b800h
        mov es,ax

        mov bx,0
        mov cx,16
        mov si,0

s:        
        mov al,[bx]
        mov ah,24h
        mov es:720h[si],ax
        mov ah,24h
        mov es:7C0h[si],ax
        
        add si,2
        inc bx
        loop s
        mov ax,4c00h
        int 21h
code ends
end start

我调试了一下,T单步运行,当第一次AX赋值到es:0720h时,屏幕显示了绿色的w,我立刻去-d es:0720内存单元,发现该AX的2477这个值并没有。我感到疑问!



截图如下:

AX=B877  BX=0000  CX=0010  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=13B8  ES=B800  SS=13B8  CS=13B9  IP=0015   NV UP EI PL NZ NA PO NC
13B9:0015 B424          MOV     AH,24
-t

AX=2477  BX=0000  CX=0010  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=13B8  ES=B800  SS=13B8  CS=13B9  IP=0017   NV UP EI PL NZ NA PO NC
13B9:0017 26            ES:
13B9:0018 89842007      MOV     [SI+0720],AX                       ES:0720=0730
-t

AX=2477  BX=0000  CX=0010  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=13B8  ES=B800  SS=13B8  CS=13B9  IP=001C   NV UP EI PL NZ NA PO NC
13B9:001C B424          MOV     AH,24
-d es:0720
B800:0720  41 07 48 07 2C 07 32 07-34 07 20 07 20 07 20 07   A.H.,.2.4. . . .
B800:0730  20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07    . . . . . . . .
B800:0740  20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07    . . . . . . . .
B800:0750  3D 07 30 07 30 07 30 07-30 07 20 07 20 07 44 07   =.0.0.0.0. . .D.
B800:0760  50 07 4F 07 20 07 4E 07-43 07 20 07 20 07 20 07   P.O. .N.C. . . .
B800:0770  20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07    . . . . . . . .
B800:0780  2D 07 74 07 20 07 20 07-20 07 20 07 20 07 20 07   -.t. . . . . . .
B800:0790  20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07    . . . . . . . .
-
liupuer
[第1楼]   [ 回复时间:2007-08-19 12:16 ]   [引用]   [回复]   [ top ] 
荣誉值:21
信誉值:0
注册日期:2007-06-23 15:27
p175:内存地址空间中,B8000H-BFFFFH共32KB的空间为80x25彩色字符模式的显示缓冲区。向这个直至空间写入数据,写入的内容将立即出现在显示器上。

你的实验是在debug环境下的,debug也需要向这个内存区放数据用于显示提示信息和结果。你的程序也要显示东西,所以,你向显存中放入数据后看到了结果(绿色w),而后你调用debug的d命令,d命令返回的结果也放入了显存就把你的数据覆盖了。

ps:以后可以多实验几次,想想为什么实验结果跟预想的结果不同。
heicai
[第2楼]   [ 回复时间:2007-08-22 22:13 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:5
注册日期:2007-08-08 14:36
此贴由 贴主 于 [ 2007-08-22 22:13 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(liupuer):2分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved