将0020:0 ff之间的256个内存单元清空这是我做的 王爽汇编实验4(2) 答案:Assembly codeassume cs:code code
将0020:0 ff之间的256个内存单元清空
这是我做的 王爽汇编实验4(2) 答案:
Assembly codeassume cs:code code segment mov ax,0020h mov ds,ax mov bx,0 mov cx,64 s: mov [bx],bx inc bx loop s mov ax,4c00h int 21h code ends end
测试通过
由此我联想到,因为经常要使用0020:0 ff这段空间测试数据,那么我就编个清0的程序方便以后分析情况,如下:
Assembly codeassume cs:code code segment mov ax,0020h mov ds,ax mov bx,0 mov ax,0 mov cx,256 s: mov [ax],bx inc ax loop s mov ax,4c00h int 21h code ends end
可是编译不通过,错误A2048:Must be index or base register
请问是怎么一回事啊?
另外麻烦大家来这里顶下,没人回复我结不了帖
http://topic.csdn.net/u/20120413/19/4f45f69d-b871-43cc-8da8-d5771051ff8f.html
[解决办法][解决办法]关于寄存器的寻址,教科书里面已经写得很清楚了。
[解决办法]mov ax,0020h
mov es,ax
.386
xor eax,eax
mov cx,64 ;256/4
mov di,0 ;偏址
rep stos dword ptr [es:di]
[解决办法]不好意思,直接写的代码,没上机,有点小错误,修改后
Assembly codeassume cs:code code segment mov ax, 0020h mov ds, ax ;设置目标数据段基址 mov cx, 256 ;设置循环次数 xor di, di ;设置目标数据段内的偏移s: mov byte ptr [di], 0 ;向ds:[di]所指向的内存中写入0 inc di ;增加偏移 loop s ;循环 mov ax,4c00h int 21h ;退出程序code ends end