. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->[bx]和loop指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第5章(121页)第一题的迷惑  [待解决] 回复[ 5次 ]   点击[ 380次 ]  
xueyx
[帖 主]   [ 发表时间:2010-08-08 08:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-02 15:38
不好意思,在完成第一题时碰到时一个问题;请大家帮忙看看。
我写的代码如下:

assume cs:codeseg
codeseg segment
                mov ax,20h
                mov ds,ax
                mov ax,0h   ;把ax换成其他的寄存器就没有问题
                mov cx,40h        
s:        mov [ax],ax         ;把ax换成其他的寄存器就没有问题
                inc ax      ;把ax换成其他的寄存器就没有问题
                loop s
        mov ax,4c00h
        int 21h
codeseg ends
end 

如果我标示的三个位置将ax替换成bx等寄存器就没有问题,而使用ax则无法通过汇编。这是为什么呢?各寄存器使用的功能有限定?
谢谢!
masmaster
[第1楼]   [ 回复时间:2010-08-08 09:57 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
在8086汇编中,只许4个寄存器可以放在[]中表示内存单元,他们是:bs,bp,si,di
别的都是非法的。
xueyx
[第2楼]   [ 回复时间:2010-08-08 11:01 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-02 15:38
谢谢楼上,但为什么我用bx却可以呢?
xueyx
[第3楼]   [ 回复时间:2010-08-08 11:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-02 15:38
并且课本上也使用bx指示内存单元啊!比如121页5.9中就使用了bx
masmaster
[第4楼]   [ 回复时间:2010-08-08 11:37 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
在8086汇编中,只许4个寄存器可以放在[]中表示内存单元,他们是:bs,bp,si,di
别的都是非法的。
------------------
回复:把bx打成bs啦
xueyx
[第5楼]   [ 回复时间:2010-08-08 17:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-02 15:38
哦,谢谢楼上高手!
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved