汇编求解解决思路
汇编求解
下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序:
以上代码是该问题的参考答案。
我的问题是:这一句s: mov ax,[bx]没有问题吗,根据王爽所讲,两个数据的类型需要匹配,ax是寄存器16位而[bx]是内存地址8位,这样是不是有问题?
------解决方案--------------------
mov ax,[bx];这句表示DS:[bx]中的2个字节给ax
如果是
mov al,[bx];这句表示DS:[bx]中的1个字节给al
------解决方案--------------------
没有问题, ax就确定了是16位数据, 因此这里[bx]指的是 [bx]和[bx+1]组合的16位数据
------解决方案--------------------
问题楼上都说了,楼主要搞清谁决定谁的问题。
------解决方案--------------------
定义数据是 字, dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
如果定义为 字节 时:(部份代码需要改动 如下)
s: mov ax,dword ptr [bx]
mov dword ptr cs:[bx],ax
下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序:
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,[bx]
mov cs:[bx],ax
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
以上代码是该问题的参考答案。
我的问题是:这一句s: mov ax,[bx]没有问题吗,根据王爽所讲,两个数据的类型需要匹配,ax是寄存器16位而[bx]是内存地址8位,这样是不是有问题?
------解决方案--------------------
mov ax,[bx];这句表示DS:[bx]中的2个字节给ax
如果是
mov al,[bx];这句表示DS:[bx]中的1个字节给al
------解决方案--------------------
没有问题, ax就确定了是16位数据, 因此这里[bx]指的是 [bx]和[bx+1]组合的16位数据
------解决方案--------------------
问题楼上都说了,楼主要搞清谁决定谁的问题。
------解决方案--------------------
定义数据是 字, dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
如果定义为 字节 时:(部份代码需要改动 如下)
s: mov ax,dword ptr [bx]
mov dword ptr cs:[bx],ax