注册 登录
编程论坛 汇编论坛

帮我看看?????????????????

bzy601638015 发布于 2012-01-05 18:57, 653 次点击
程序代码:
01.assume cs:code,ds:data

02.       data segment

03.               dw 3,18700,65535,8

04.       data ends

05.           

06.           code segment

07.         start : mov ax,data

08.                 mov ds,ax

09.                         mov si,0

10.                         mov di,32

11.                        

12.                         mov cx,4

13.                s:   mov ax,[si]

14.             mov [di],ax

15.             add si,2

16.             add di,2

17.          loop s

18.            mov ax,4c00h

19.            int 21h

20.      code ends

21.  end start         
为什么只有3复制过去了,而其它的没有复制过去??调试不出来??

[ 本帖最后由 bzy601638015 于 2012-1-5 23:00 编辑 ]
8 回复
#2
zaixuexi2012-01-05 22:11
用这种代码来考我么?
1. sizeof(data seg) = 0x10
2.
-a
0B93:0100 dw 03
0B93:0102
-u
0B93:0100 0300          ADD     AX,[BX+SI]
解释完了
#3
bzy6016380152012-01-05 22:58
回复 2楼 zaixuexi
我想其它也复制过去,怎么改代码啊???
#4
zaixuexi2012-01-05 23:05
你先自己把地址算一算,你把数据复制到哪里去了,好伐?
#5
zaixuexi2012-01-05 23:07
你怎么自己都不知道自己的代码在干吗的,我感到奇怪
#6
bzy6016380152012-01-05 23:24
因为dw 代表一个字,所以si开始为0,移到di中去啊,然后,si+2,di+2,所以第二次应该是si+2的数据复制到di+2中啊,为什么di+2里的数据不是啊?????
#7
bzy6016380152012-01-05 23:33
麻烦你能站在我的角度,帮我理解下好吗??这些我只是看了书上和别的代码相似,所以自己想了下,按到那个意思编了出来,但是为什么不能实现呢???
#8
bzy6016380152012-01-05 23:41
运行结束后
-d 1415:0
1415:0000  03 00 0c 49 ff ff 08 00-
1415:0010  b8 15 14 8e d8 be 00 00-
1415:0020  03 00 83 c6 02 83 c7 04-
为什么是这样?????????????????            
#9
zjsxwc2012-01-06 11:51
di地址没明确指定, DS:32  究竟是什么没有指定
1