汇编网首页登录博客注册
pascale的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
文章收藏
友情链接

[2010-01-02 11:22] 求助 关于实验11 的错误。

图片载入中
下面是我写的实验11 的程序。 但是我那MASMPlus编译时出现未定义letterc请帮我看一下哪写错了。
datasg segment
        db "Beginner's All-purpose Symbolic Instruction Code.", 0
datasg ends

codesg segment
        begin: mov ax, datasg
                    mov ds, ax
                    mov si, 0
                    call  letterc
                    
                    mov ax, 4c00h
                    int 21h
                    
        letterc: cmp BYTE ptr[si], 0 //判断是否到结尾
                     je over
                     cmp BYTE ptr[si], 'a'
                     jb back
                     cmp BYTE ptr[si], 'z'
                     ja back
                     and BYTE ptr[si], 11011111b
        back: inc si
               jmp letterc
        over: ret            
codesg ends
end begin
编译后的
评论次数(3)  |  浏览次数(1117)  |  类型(汇编作业) |  收藏此文  | 

[  pascale   发表于  2010-01-02 20:44  ]

晕,中间的注释没加“;” 注释成代码了。太粗心了

[  shjnba   发表于  2010-08-25 20:12  ]

call  letterc 这个调用子程序
jmp letterc   这个是转到这个标号
是不是要分清楚啊!

[  zhuleilei_2010   发表于  2010-10-22 16:59  ]

对程序修改如下,编译通过。     
DATASG  SEGMENT
       MESS1  DB        "BEGINNER'S ALL-PURPOSE SYMBOLIC INSTRUCTION CODE.",0
      DATASG  ENDS
     STACKSG  SEGMENT
       MESS2  DB        100  DUP(?)
     STACKSG  ENDS

      CODESG  SEGMENT
              ASSUME    CS:CODESG,DS:DATASG,SS:STACKSG
        MAIN  PROC      FAR
      BEGIN:  MOV       AX, DATASG
              MOV       DS, AX
              MOV       SI, 0
              CALL      LETTERC
                     
              MOV       AX, 4C00H
              INT       21H

              RET
        MAIN  ENDP
;
     LETTERC  PROC      NEAR
              CMP       BYTE PTR MESS1[SI], "0"
              JE        OVER
              CMP       BYTE PTR[SI], 'a'
              JB        BACK
              CMP       BYTE PTR[SI], 'z'
              JA        BACK
              AND       BYTE PTR[SI], 11011111B
       BACK:  INC       SI
              JMP       LETTERC
       OVER:  RET
     LETTERC  ENDP

      CODESG  ENDS
              END       BEGIN

请楼主在使用汇编语言编程时一定要使用正确的汇编格式!!!
另外,call指令后出现的是子程序的入口地址,所以一定要在程序段中定义一个子程序!

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码