. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->[bx]和loop指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  为什么用AX,就不能编译通过  [待解决] 回复[ 4次 ]   点击[ 365次 ]  
gxd_god
[帖 主]   [ 发表时间:2014-09-02 14:38 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-09-02 14:30
assume cs:codesg
 codesg  segment
 mov ax, 020h
 mov ds, ax

 mov ax, 0h
 mov cx, 040h  

 s:mov ds:[ax], al
 add ax, 1 
 loop s
 mov ax, 4c00H
 int 21H
 codesg ends
 end

这个程序编译失败, 把 ax 换成 bx  编译成功, 为什么
gyq
[第1楼]   [ 回复时间:2014-09-03 01:55 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25
这个是寄存器用法上的问题了,ax不能用于寄存器间接寻址,bx可以。
楼主可以看看教材164页,有关所有寻址方式的总结。
kelamoyujuzhen
[第2楼]   [ 回复时间:2015-01-13 20:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2015-01-04 21:38
使用寄存器间址寻址,只能使用BX BP SI DI四个寄存器中的一个,不可以使用其他寄存器。32为程序才可以使用任意32为寄存器间址寻址。
编译时:提示“error A204B:Must be index or base register”。说的就是这个问题,你要么用变址(SI DI),要么用基址(BX BP)
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved