. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->[bx]和loop指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  将0020:0 ff之间的256个内存单元清空  [已解决] 回复[ 2次 ]   点击[ 287次 ]  
i945800687
[帖 主]   [ 发表时间:2012-05-20 20:26 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2012-05-11 19:07
这是我的实验4(2)答案:

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的程序方便以后分析情况,如下:

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
请问是怎么一回事啊?
tomato
[第1楼]   [ 回复时间:2012-05-21 00:19 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
“mov [ax],bx”这条指令有问题,ax寄存器不可以当作偏移地址寄存器。
i945800687
[第2楼]   [ 回复时间:2012-05-26 10:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2012-05-11 19:07
此贴由 贴主 于 [ 2012-05-26 10:18 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(tomato):2分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved