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

还是王爽汇编实验9

有容就大 发布于 2012-08-11 10:51, 995 次点击
贴个他给的材料图
只有本站会员才能查看附件,请 登录

然后代码在https://bbs.bccn.net/thread-375060-1-1.html
我想问下在一个循环中
程序代码:
           mov bx, 0
           mov si, 0
           mov cx, 16
      s1:  mov ax, [bx]
           mov es:[bx + 720h][si], ax
           mov al, 2
           mov es:[bx + 721h][si], al
           inc bx
           inc si
他的过程 我的推测是
mov ax, [bx]  后 ax = 'we'
mov es:[bx + 720h][si], ax 后 两个都是‘we’
mov al, 2
mov es:[bx + 721h][si], al 后 es:[bx + 721h][si]应该是'w2' 这样才符合题意
问题是al是一个字节 es:[bx + 721h][si]原来有两个字节 那么Mov指令为什么不改变前一个字节 变成 '2e'?按理说在'we'中 w还是处于低字节吧 。
18 回复
#2
zklhp2012-08-11 11:55
a dw 1234h

mov ax, a 此时 ax中是1234h 顺序和数是一样的

但在内存中 是34 12 因为我们用的CPU是小尾模式 如果你不知道啥是小尾模式 看书罢
#3
有容就大2012-08-11 12:43
想了下 你看这样理解对不对
.data
  a  db 'w''e'

mov bx, 0
mov ax, a        后ax  ‘we’
mov es:[bx], ax  后es:[bx]    'we'
mov al, 2
mov es:[bx + 1], al   关键是这里 es:[bx + 1] 应该对应‘e?’ 经过mov指令后
2取代的是e字节而不是?字节. 或者这么说 这里是不是有个隐含的byte ptr es:[bx + 1]?

#4
Agdmeg2012-08-11 13:57
w明明在AH中吧
#5
zklhp2012-08-11 14:09
以下是引用有容就大在2012-8-11 12:43:44的发言:

想了下 你看这样理解对不对
.data
  a  db 'w''e'

mov bx, 0
mov ax, a        后ax  ‘we’
mov es:, ax  后es:    'we'
mov al, 2
mov es:, al   关键是这里 es: 应该对应‘e?’ 经过mov指令后
2取代的是e字节而不是?字节. 或者这么说 这里是不是有个隐含的byte ptr es:?

db 12h,34h 在内存中是 12 34

dw 1234h 在内存中是 34 12

不知道你能不能理解 不能理解你再说
#6
有容就大2012-08-11 14:10
回复 4楼 Agdmeg
那mov es:[bx], ax  后‘w’在es:[bx]里还是es:[bx + 1]里?
#7
有容就大2012-08-11 14:16
回复 5楼 zklhp
db 12h,34h 在内存中是 12 34

dw 1234h 在内存中是 34 12

不知道你能不能理解 不能理解你再说
==================
这个能理解

#8
zklhp2012-08-11 14:20
以下是引用有容就大在2012-8-11 14:16:21的发言:

db 12h,34h 在内存中是 12 34

dw 1234h 在内存中是 34 12

不知道你能不能理解 不能理解你再说
==================
这个能理解

理解了就好啊 结题给分罢
#9
Agdmeg2012-08-11 14:31
怎么发不了图
#10
有容就大2012-08-11 14:34
回复 8楼 zklhp
哈哈 好吧 催命鬼 貌似是弄明白了 数据段里定义的是字节型 我擦
#11
Agdmeg2012-08-11 14:39
回复 6楼 有容就大
在AX中,w储存在高地址AH中,mov es:[bx], ax 后,w就应该储存在高地址es:[bx + 1]里
#12
Agdmeg2012-08-11 14:42
只有本站会员才能查看附件,请 登录

这就是代码中定义的数据在内存中储存的方式,版主我理解的对不对?
#13
有容就大2012-08-11 14:49
回复 12楼 Agdmeg
有 a db 1234h这种方式吗?

#14
有容就大2012-08-11 14:50
回复 11楼 Agdmeg
那么请阐述下 寄存器地址和内存地址的区别?
#15
Agdmeg2012-08-11 14:55
那就改成A DD 12345678H,12H,00H,4321H吧
#16
Agdmeg2012-08-11 14:56
这个不是重点
#17
zklhp2012-08-11 14:57
以下是引用Agdmeg在2012-8-11 14:55:37的发言:

那就改成A DD 12345678H,12H,00H,4321H吧

改成这个 你上面画的那个图又不对了

dd 12h

是 12 00 00 00
#18
Agdmeg2012-08-11 15:00
改成:
A DD 12345678H
B DB 12H
C DB 00H
D DW 1234H
这总行了吧
#19
有容就大2012-08-11 15:07
回复 18楼 Agdmeg
嘿嘿 总(jie)的好~~
1