入门级汇编问题,请指教
将内存单元中的3500H开始的16个数据(0-15)传递到3600H单元开始的数据单元中。
请高手帮忙写出完整源程序
一个一百分,如果前面有人已给出了源程序,但后面又有人给出了另一个思路的程序再加一百分,欢迎探讨!
谢谢!
将内存单元中的3500H开始的16个数据(0-15)传递到3600H单元开始的数据单元中。
请高手帮忙写出完整源程序
一个一百分,如果前面有人已给出了源程序,但后面又有人给出了另一个思路的程序再加一百分,欢迎探讨!
谢谢!
codesegment
assumecs:code
start:
pushds
subax,ax
pushax
movax,3500h
moves,ax
movax,3600h
movds,ax
movcl,16
subbx,bx
lop:
movdl,byte ptr es:[bx]
movbyte ptr ds:[bx],dl
incbx
looplop
retf
codeends
endstart
以上假设数据是以 byte 方式存放的~~~要是以 word 方式请自己更改~~~
晕啊,楼主多看书
to:mydo(坎道斯|Kinds)
我用debug单步跟踪
怎么发现是 move cl,10而不是move cl,16 呢?
能在程序中加点注释吗?
谢谢!
move cl,10
10 is hex, =16
建议:rep stosw
代替 循环
movSI,3500h
movDI,3600h
movcl,16
自己组合
这很简单,debug中用的是16进制表示数字,move cl,10
中的10是十进制中的16~~~~
能给点注释吗?
subax,ax
subbx,bx
这两句什么意思呢?
subax,ax
subbx,bx
set ax=0,bx=0
subax,ax
subbx,bx
就是把寄存器AX,BX清零.
清零怎么都用 sub 啊?
为何不用 xor ?? 它可比 sub 快啊
感谢各位
我是刚学汇编
看了大家的注释和讨论我受益菲浅
希望大家以后多多照顾小弟
我试过上面的几个程序,但调试后结果并不正确
我编译成了test.exe
然后
debug test.exe
-d3500
-d3600
-g
-d3500
-d3600
这时的3500h与3600h的数据应该一样,但结果却是不同的,不符合题目要求.不知哪有问题
小弟胡乱写了一个 也没调试 不知道对不对 高手不要见笑
.model small
.386
.stack100h
.data
.code
start:
mov eax,3500h
movebx,3600h
movcx,4
movesi,0
lab:movedx,[eax][esi*4]
mov[ebx][esi*4],edx
incesi
looplab
mov ah,4ch
int 21h
end start
minsavage(帆野)
你的代码调试后只有一行的内存单元是相同的
我随便写的 没有细想 也没有调试
如果全盘错误 大家不要见笑
如果还有点正确 就请自行修改吧
恭喜啊 楼主是不是可以散分了啊?