yao072002 发表于 2011-8-6 15:34:48

书本 P120 的问题

书本P120有这样的一道题目: 将内存 ffff : 0 ~ ffff :b单元的数据复制到 0 : 200 ~ 0 :20b单元中
   书本给出的答案是:

assume cs:code
code segment
   mov bx,0
   mov cx,0ch
   s:mov ax, 0ffffh
   mov ds, ax
   mov dl,       
   
   mov ax, 0200h
   mov ds, ax
   mov , dl

   inc bx
   loop s

   mov ax, 4c00h
   int 21h

code ends
end   

我写的代码为:

assume cs:code

code segment
                  mov bx, 0
       mov cx, 0ch
               s: mov ax, 0ffffh
       mov ds, ax
       mov dx,
       
       mov ax, 0200
       mov ds, ax
       mov , dx
       
       add bx, 2
       loop s
       
       mov ax, 4c00h
       int 21h
       
code ends
end       

debug时发现0:200 ~ 0 : 20b 单元的内容并没有改变, 即内存 ffff : 0 ~ ffff :b单元的数据   不 能   成功复制到 0 : 200 ~ 0 :20b单元中 。 书本里是一个一个字节复制, 我的是一个一个字复制, 为什么不行啊??! :Q。求助大虾解释为什么不能一个字复制过去。

就爱吃麻花 发表于 2011-8-6 15:54:10

你看错了?书本的mov ax, 0200h
怎么会把偏移设置成0200H呢,那变成物理地址不就成了2000了?

mov ax, 0200这你自己写的,少了个h,更悲催
h代表16进制,你不加就是10进制,200的10进制就是512,*16以后就是5120……你偏哪去了

只是丶梦 发表于 2011-8-6 16:49:04

哈哈 楼上正解 h 和没h 差别就是十六进制和十进制了

parbbo 发表于 2011-8-6 19:21:21

细心是很重要的哦

yao072002 发表于 2011-8-7 10:18:40

就爱吃麻花 发表于 2011-8-6 15:54 static/image/common/back.gif
你看错了?书本的mov ax, 0200h
怎么会把偏移设置成0200H呢,那变成物理地址不就成了2000了?



谢谢你的帮助啊, 确实是少了个H, 应改为mov ax, 0200h .另: 书本的怎么会把偏移地址设为0200H呢? 书本的要求是往0 : 200 ~ 0 :20b单元中复制内容, 即物理地址是2000H.

就爱吃麻花 发表于 2011-8-7 12:32:06

yao072002 发表于 2011-8-7 10:18 static/image/common/back.gif
谢谢你的帮助啊, 确实是少了个H, 应改为mov ax, 0200h .另: 书本的怎么会把偏移地址设为0200H呢? 书 ...

另: 书本的怎么会把偏移地址设为0200H呢? 书本的要求是往0 : 200 ~ 0 :20b单元中复制内容, 即物理地址是2000H.

看这里,0 : 200 ,200在右边,左边是段地址,右边是偏移地址,只有段地址才会*16,所以应该是0200才对

yao072002 发表于 2011-8-7 15:14:19

就爱吃麻花 发表于 2011-8-7 12:32 static/image/common/back.gif
另: 书本的怎么会把偏移地址设为0200H呢? 书本的要求是往0 : 200 ~ 0 :20b单元中复制内容, 即物理地 ...

认真看一下书, 确实是我看错了, 书本要求的物理地址确实是 0020:0.   让你见笑了
页: [1]
查看完整版本: 书本 P120 的问题