. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->标志寄存器
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验11-这个程序错在哪,怎么编译不了啊,请大家指教!  [已解决] 回复[ 5次 ]   点击[ 317次 ]  
harryhwg
[帖 主]   [ 发表时间:2010-06-24 20:54 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2010-04-17 06:12
assume cs:code 

data segment 
   db "Beginner's All-purpose Symbolic Instruction Code.",0 
data ends 

code segment 
        
 start: mov ax,data 
        mov ds,ax 
        mov si,0 

        call letterc 
         
        mov ax,4c00h 
        int 21h 

letterc:mov al,ds:[si] 
         cmp al,0 
         je s 
         cmp al,61h 
         jb s0 
         cmp al,7ah 
         ja s0 
          
         and al,11011111b 
         mov ds:[si],al 

     s0: inc si 
         jmp near letterc 
     s:  ret 
  
         
code ends 

end start 

我的程序错在哪,怎么编译不了啊,请大家指教!
masmaster
[第1楼]   [ 回复时间:2010-06-24 21:30 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
letterc:mov al,ds:[si] 
里面的冒号是全角, 当然会报错

jmp near letterc 
把near去掉就ok啦
harryhwg
[第2楼]   [ 回复时间:2010-06-25 21:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2010-04-17 06:12
以前从没注意过冒号,谢谢你!
把jmp near letterc 中near去掉或者换成short都可以编译成功,但不清楚为什么
masmaster
[第3楼]   [ 回复时间:2010-06-25 21:54 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
循环都是短转移。
harryhwg
[第4楼]   [ 回复时间:2010-06-26 21:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2010-04-17 06:12
谢谢!
harryhwg
[第5楼]   [ 回复时间:2010-06-26 21:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2010-04-17 06:12
此贴由 贴主 于 [ 2010-06-26 21:33 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(masmaster):8分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved