新人求助
向内存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
直接对系统内存写数据的时候,地址这些东西很敏感的。有些地方是不可以写的。就会报错。还有的是你吧人家正在使用的地址给覆盖了。就报错了 内存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]