汇编语言6.1中的一个问题 快崩溃了
检测点6.1(第119页)-------------------
(1)
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start: mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: mov ax,
mov cs:,ax;此条指令为所填指令
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
DW 写的那一段数据写到哪个段呢?好像是CS吧那写进去后 为什么还有mov cs:,ax CS不是已经改变了吗内存的段地址就不是0了 不是 求各位大神求解 小的先谢谢了 一直不太懂这些 本帖最后由 wAterLoo 于 2012-3-18 21:10 编辑
ds:0-ds:15的数据只是写入到cs:0-cs:15的内存中,并没有说CS寄存器的值被更改了
同楼上。。。外加介个程序执行时改变了IP,CS木有变。。。。 DW写到了数据段(DS段),mov cs:,ax只是个写法(意思等同于这个mov bx, ax把,或许不是),内存段地址不会是0的把 程序加载到内存的时候,cs代码段的前16位保存dw这个八个字符,之后是程序。所以 cs:,ax 的含义就是用内存地址00001-0000F来替换DW里面的数据。 这个我开始也不太理解!后来想了一下应该是这样?
dwX,X,X,X,X,X,这里是先让CPU在CS里给我们一个16位的字节空间?这样才能让以下代码中的DS指定的内存数据能进入CS内存?
页:
[1]