. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  show_str子程序的问题  [待解决] 回复[ 4次 ]   点击[ 308次 ]  
zy3287
[帖 主]   [ 发表时间:2008-09-17 10:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-07-17 17:25
下面的代码为什么执行
mov es:[bx],cl
mov es:[bx+1],dl
的时候写入的并不是cl,dl的值呢????


assume cs:code,ds:data

  data segment
    db 'welcome to masm!',0
  data ends

  code segment
    start:
     mov dh,8
     mov dl,3
     mov cl,2
     mov ax,data
     mov ds,ax
     mov si,0
     call show_str

     mov ax,4c00h
     int 21h

    show_str:
     mov ax,0b800h
     mov es,ax
     mov bx,ax
     mov al,0ah
     mul dh
     mov dh,0
     add bx,ax
     add bx,dx
     mov dl,cl
    s:
     mov cl,[si]
     mov ch,0
     jcxz ok
     mov es:[bx],cl
     mov es:[bx+1],dl
     inc si
     add bx,2
     jmp short s
    ok:
     ret
  code ends

end start
musicvs
[第1楼]   [ 回复时间:2008-09-17 12:18 ]   [引用]   [回复]   [ top ] 
荣誉值:56
信誉值:14
注册日期:2008-08-20 11:21
感觉你的程序好像不对...
hino
[第2楼]   [ 回复时间:2008-09-17 12:54 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:3
注册日期:2008-06-22 20:23
mov es:[bx],cl
mov es:[bx+1],dl
的时候写入的并不是cl,dl的值呢???? 

==============

加上 byte ptr?
zy3287
[第3楼]   [ 回复时间:2008-09-17 13:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-07-17 17:25
这是我debug show_str.exe下的一段数据
cx=0077h cl=77h dx=0002h dl=02h
但是mov es:[bx],cl怎么显示 es:b853=14h 而不是77h
mov es:[bx+1],dl    es:b854=26h 而不是02h
求助求助

AX=0050  BX=B853  CX=0077  DX=0002  SP=FFFE  BP=0000  SI=0000  DI=0000
DS=13CC  ES=B800  SS=13CC  CS=13CE  IP=002D   NV UP EI NG NZ NA PE NC
13CE:002D E30D          JCXZ    003C
-t

AX=0050  BX=B853  CX=0077  DX=0002  SP=FFFE  BP=0000  SI=0000  DI=0000
DS=13CC  ES=B800  SS=13CC  CS=13CE  IP=002F   NV UP EI NG NZ NA PE NC
13CE:002F 26            ES:
13CE:0030 880F          MOV     [BX],CL                            ES:B853=14
-t

AX=0050  BX=B853  CX=0077  DX=0002  SP=FFFE  BP=0000  SI=0000  DI=0000
DS=13CC  ES=B800  SS=13CC  CS=13CE  IP=0032   NV UP EI NG NZ NA PE NC
13CE:0032 26            ES:
13CE:0033 885701        MOV     [BX+01],DL                         ES:B854=26
mxl800
[第4楼]   [ 回复时间:2008-10-11 10:40 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-09-17 16:50
这是你写入前的数据,不是写入后的。另外在debug中进行调试,显示缓冲区的内容是一直在变的,所以就算是写入后的数据也会被改变。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved