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

将0020:0 ff之间的256个内存单元清空,该怎么解决

2012-05-28 
将0020:0 ff之间的256个内存单元清空这是我做的 王爽汇编实验4(2) 答案:Assembly codeassume cs:code code

将0020:0 ff之间的256个内存单元清空
这是我做的 王爽汇编实验4(2) 答案: 

Assembly code
assume 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 code
assume 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

[解决办法]
探讨
引用:
引用:
谢谢1、2楼解答

我改了但还是不对

而且如果按你们的改法,那么256个单元就变成0~255了,我需要全部置为0


将AX换成 SI or DI 吧

能不能讲下原理呢?或者说我后面就能学到?
源码直接改可以吗?

[解决办法]
关于寄存器的寻址,教科书里面已经写得很清楚了。
[解决办法]
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 code
assume 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 

热点排行