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

汇编求解,该如何解决

2012-09-16 
汇编求解下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序:C/C++ codeassume cs:c

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

C/C++ code
assume cs:codesgcodesg segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart: mov ax,0mov ds,axmov bx,0mov cx,8s: mov ax,[bx]mov cs:[bx],axadd bx,2loop smov ax,4c00hint 21hcodesg endsend 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

热点排行