. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->更灵活的定位内存地址的方法
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  这个程序哪里写的不对,编译好多次通不过?  [待解决] 回复[ 5次 ]   点击[ 641次 ]  
laohou
[帖 主]   [ 发表时间:2008-02-18 17:49 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-01-14 21:05
assume ds:data 
data segment
 db 'unIX'
 db 'foRK'
data ends
code segment
   start: mov al,'a'
          mov bl,'b' 
          mov ax,4c00h
          int 21h
  code ends
  end start
laohou
[第1楼]   [ 回复时间:2008-02-18 17:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-01-14 21:05
老是提示:
   71.txt(7): error A2062: Missing or unreachable CS

  50576 + 415184 Bytes symbol space free

      0 Warning Errors
      1 Severe  Errors 看不懂呀.
taotling
[第2楼]   [ 回复时间:2008-02-18 19:07 ]   [引用]   [回复]   [ top ] 
荣誉值:53
信誉值:0
注册日期:2008-02-09 02:55
第一行改成:
assume ds:data,cs:code
laohou
[第3楼]   [ 回复时间:2008-02-18 19:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-01-14 21:05
为什么要加cs:code,不加就不行呢?
taotling
[第4楼]   [ 回复时间:2008-02-18 22:37 ]   [引用]   [回复]   [ top ] 
荣誉值:53
信誉值:0
注册日期:2008-02-09 02:55
我的理解:
assume ds:data你可以不加,
因为程序的data可以放在code段之前的栈段中。
你还可以用mov ax,data;mov ds,ax来实现段与寄存器的关联。

但assume cs:code你一定要加,
编译器是根据end start来指定CS:IP的,
但是这里的CS要先确定,
靠什么来确定呢?
如果你不用assume cs:code将code与cs寄存器相关联
编译器是不知道CS怎么来确定的。
所以用assume cs:code确定CS。
laohou
[第5楼]   [ 回复时间:2008-02-19 10:29 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-01-14 21:05
有道理,谢谢老师.
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved