首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

汇编求解解决思路

2013-01-02 
汇编求解下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序:assume cs:codesgcodes

汇编求解
下面的程序实现依次用内存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

热点排行