鱼C论坛

 找回密码
 立即注册
查看: 2553|回复: 2

call后面的标号,需要定义嘛?

[复制链接]
发表于 2016-1-10 10:34:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ufo9876 于 2016-1-10 11:21 编辑

               我想把10.12寄存器冲突中的第二小题完善一下,编译的时候debug提示我call后面的capital为未定义的符号(undefined symbol:capital)我弄不明白是怎么回事,老师们给帮忙指点一下


assume cs:code
    data segment
             db 'word',0
             db 'unix',0
             db 'wind',0
             db 'good',0
    data ends
       
        stack segment
             dw 0,0,0,0,0,0,0,0
        stack ends         
       
        code segment
       
         start:mov ax,data
                 mov ds,ax
                 mov bx,0
                 mov ax,stack
                 mov ss,ax
                 mov sp,16+offset stack
                  
                 mov cx,4
               s:mov si,bx
                call capital
                  
                   add bx,5
                   loop s
       
                   mov ax,4c00h
                   int 21h
                  
               code ends
               end start
                  
        capital:push cx
                    push si
                       
         change:mov cl,[si]
                      mov ch,0
                      jcxz ok
                      and byte ptr [si],11011111b
                      inc si
                      jmp short change
                       
                       
                 ok:pop si
                      pop cx
                      ret
                               
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-1-10 16:04:29 | 显示全部楼层
assume cs:code
    data segment
             db 'word',0
             db 'unix',0
             db 'wind',0
             db 'good',0
    data ends
        
        stack segment
             dw 0,0,0,0,0,0,0,0
        stack ends         
        
        code segment
        
         start:mov ax,data
                 mov ds,ax
                 mov bx,0
                 mov ax,stack
                 mov ss,ax
                 mov sp,16+offset stack
                  
                 mov cx,4
               s:mov si,bx
                call capital
                  
                   add bx,5
                   loop s
        
                   mov ax,4c00h
                   int 21h
                  
               code ends
               end start ; 到这里已经结束了
                  
        capital:push cx ;所以这里会找不到
                    push si
                        
         change:mov cl,[si]
                      mov ch,0
                      jcxz ok
                      and byte ptr [si],11011111b
                      inc si
                      jmp short change
                        
                        
                 ok:pop si
                      pop cx
                      ret
应该这样
  1. assume cs:code

  2. data segment
  3.         db 'word',0
  4.         db 'unix',0
  5.         db 'wind',0
  6.         db 'good',0
  7. data ends
  8.         
  9. stack segment
  10.         dw 0,0,0,0,0,0,0,0
  11. stack ends         
  12.         
  13. code segment

  14. start:
  15.         mov ax,data
  16.         mov ds,ax
  17.         mov bx,0
  18.         mov ax,stack
  19.         mov ss,ax
  20.         mov sp,16+offset stack

  21.         mov cx,4
  22. s:       
  23.         mov si,bx
  24.         call capital

  25.         add bx,5
  26.         loop s

  27.         mov ax,4c00h
  28.         int 21h
  29.        
  30.        
  31.         capital:
  32.         push cx
  33.         push si

  34. change:
  35.         mov cl,[si]
  36.         mov ch,0
  37.         jcxz ok
  38.         and byte ptr [si],11011111b
  39.         inc si
  40.         jmp short change
  41. ok:
  42.         pop si
  43.         pop cx
  44.         ret
  45.        
  46.         code ends
  47. end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-1-10 19:27:22 | 显示全部楼层
十分感谢,你说的非常正确,因为一开始我按书上的格式写的,最后没有‘code ends和end start’这两句,编译的时候它提示我没有结束语句,我就把这两句给添到那个位置去了,没想到放错了地方,又学习了,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-4 15:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表