|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 大妈学编程 于 2020-8-12 00:33 编辑
先上代码
- assume cs:code
- code segment
- mov ax,cs
- mov ds,ax
- mov ax,0020h
- mov es,ax ; 这里将es设置成0020h
- mov bx,0 ; 这里将bx设置成0
- mov cx,0017h
- s:mov al,[bx] ; 到这里为止,bx的值还是0
- mov es:[bx],al ; 这里的意思, 是不是段地址:偏移地址? 这里不明白
- inc bx
- loop s
- mov ax,4c00h
- int 21h
- code ends
- end
复制代码
实验的目的是要将 “mov ax,4c00h” 之前的指令复制到内存 0:200处。 需要填空的两个地方都没什么问题。
问题是,循环中 “mov es:[bx], al” ,这条指令不明白,这样的写法应该是 段地址:偏移地址 吧? 那些,段地址es的值 是0020h, 偏移地址bx的值是0 ,根据 段地址*16+偏移地址,得出的地址应该是 0020:0 这个地址才对吧?
程序 运行起来,0020:0 这个地址,也是会复制到指令过去的,但是为什么0:200处也会发生改变的?
菜鸟上路,请各位大神不吝赐教。 |
|