451062810 发表于 2015-11-28 23:41:49

新人求助

向内存0:200~0:23F 依次传送数据0-63
为何
assume cs:codesg
codesg segment
       mov ax,2
       mov ds,ax
       mov cx,64
       mov bx,0
   s:mov ,bl
       inc bx
       loop s
       mov ax,4c00h
       int 21h
codesg ends
end
      
这样写debug调试的时候报错。

但是这样就对的了
assume cs:code
code segment
   mov ax,20h
   mov ds,ax
   mov bx,0
   mov cx,40h
s:   mov ,bl
   inc bx
   loop s
   mov ax,4c00h
   int 21h
code ends
end

康小泡 发表于 2015-11-29 10:42:20

直接对系统内存写数据的时候,地址这些东西很敏感的。有些地方是不可以写的。就会报错。还有的是你吧人家正在使用的地址给覆盖了。就报错了

一念天堂 发表于 2015-11-29 16:15:18

内存0:200~0:23F 对应的物理地址为00200H~0023FH
物理地址=(SA)*16+(EA)
      mov ax,2
      mov ds,ax
      mov cx,64
      mov bx,0 表示的(ds)*16+(bx)=(2H)*16+0=20H

      mov ax,20h
      mov ds,ax
      mov bx,0 表示的(ds)*16+(bx)=(20H)*16+0=200H

;向内存0:200~0:23F 依次传送数据0-63
assume cs:code

code segment
        mov ax,20h
        mov ds,ax
        mov bx,0        ;指向物理地址20:0
       
        mov cx,64        ;循环次数
s:        mov ,bl
              inc bx                ;改变偏移地址和赋值数值
              loop s

              mov ax,4c00h        ;退出程序
              int 21h
code ends
end
(希望没有错误~)
页: [1]
查看完整版本: 新人求助