. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  改·最后一题(2)  [已解决] 回复[ 3次 ]   点击[ 198次 ]  
r251314w
[帖 主]   [ 发表时间:2009-02-24 17:36 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2009-02-14 17:14
把昨天晚上的程序研究了一个下午 只能改到这种程度了 但是编译的时候 显示: error A2009: Symbol not defined: B800H 这是什么意思 ES是段寄存器啊 怎么会出错?
assume cs:code,ds:data,ss:stack
  data segment
    db 'Welcome to masm!'
    db 02h,24h,71h
  data ends

  stack segment
    dw 8 dup (0)
  stack ends

  code segment
    start:
          mov ax,data
          mov ds,ax
          mov ax,stack
          mov ss,ax
          mov sp,10h
          mov es,B800h

          mov di,0
          mov bx,0
          mov cx,3
        s:
          push cx
          mov si,0
          
          mov cx,8
       s0:
          mov al,[bx][si]
          mov es:[bx].7F9h[si],al
          mov al,[bx][si+1]
          mov es:[bx].7F9h[si+2],al
          mov ah,[di].10h
          mov es:[bx].7FAh[si],ah
          mov es:[bx].7FAh[si+2],ah
          
          add si,2
          loop s0
          inc di
          add bx,160
          pop cx
          loop s

          mov ax,4c00h
          int 21h

  code ends
end start
r251314w
[第1楼]   [ 回复时间:2009-02-24 17:42 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2009-02-14 17:14
看了别人的程序后又发现 B800H 前面要加0 才想起了16不能以字母起头 但是编译的时候又说 Immediate mode illegal ???
r251314w
[第2楼]   [ 回复时间:2009-02-24 17:50 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2009-02-14 17:14
终于在网上找到了 mov ax,0B800h
               mov es,ax
估计是编糊涂了 段寄存器不能直接寻址  - -||
r251314w
[第3楼]   [ 回复时间:2009-02-24 17:52 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2009-02-14 17:14
此贴由 贴主 于 [ 2009-02-24 17:52 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved