. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  SOS:课程设计一,百思不得其解的编译错误,求救求救  [已解决] 回复[ 3次 ]   点击[ 570次 ]  
chaplinyip
[帖 主]   [ 发表时间:2011-08-03 19:22 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:1
注册日期:2011-07-28 10:58
以下是我的程序
编译后显示:
2.asm(59): error A2009: Symbol not defined: DTOC
2.asm(74): error A2009: Symbol not defined: DTOC
2.asm(94): error A2009: Symbol not defined: DIVDW
2.asm(100): error A2009: Symbol not defined: DTOC
2.asm(120): error A2009: Symbol not defined: SHOW_STR

请各路高人解救

assume cs:code,ds:data,es:table

data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'

dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

dd 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dd 11542,14430,15257,17800

dd 21 dup (0)
data ends

table segment
db 840 dup (' ')
table ends

code segment
main:

mov ax,data
mov ds,ax


mov ax,table
mov es,ax

mov cx,21

;----------------
push cx
mov di,0
mov si,0

year:

mov ax,[di]
mov es:[si],ax
mov ax,[di+2]
mov es:[si+2],ax

add di,4
add si,40

loop year

pop cx

;----------------
push cx
mov di,84
mov si,10

salary:

call dtoc          ;--------------------------------------<59>---------------------
add di,4
add si,40

loop salary

pop cx

;-------------------------
push cx
mov di,168
mov si,20

stuff:

call dtoc              ;---------------------------------------<74>----------------
add di,4
add si,40

loop stuff

pop cx

;--------------------------
mov bx,84
mov di,252
mov si,30

average:

push cx

mov ax,[bx]
mov dx,[bx+2]
mov cx,[bx+84]
call divdw     ;--------------------------------------------<94>---------------
mov [di],ax
mov [di+2],dx

pop cx

call dtoc       ;--------------------------------------------<100>---------------
mov byte ptr es:[si+9],0

add di,4
add si,40

loop average

;--------------
mov cx,21
mov dh,0
mov bx,table
mov ds,bx

display:
mov si,0
mov dl,0

push cx
mov cx,0071h
call show_str         ;------------------------------<120>---------------------
pop cx

add si,40
inc dh

loop display


;-------------
mov ax,4c00h
int 21h
code ends
end main


;--------------------------------------------------dtoc----------------------------
dtoc: 

push ax 
push si 
push cx 
push di 
push dx 

;------------ 
mov ax,[di] 
mov dx,[di+2] 

mov di,0 

;------------
t: 

mov cx,10 
call divdw 
add cx,30h 
push cx 
inc di 
;-----------
mov cx,ax 
jcxz judge_1 
jmp short t 
;-----------
judge_1: 
mov cx,dx 
jcxz move 
jmp short t 


;----------------------------- 
move: 

mov cx,di 
;-------------- 
k: 
pop ax 
mov es:[si],al 
inc si 
loop k

;------------------ 
pop dx 
pop di 
pop cx 
pop si 
pop ax 

ret 



;------------------------------------------------------divdw-----------------------

divdw:  

push bx  

;-----------
push ax  
mov ax,dx  
mov dx,0  
div cx  
mov bx,ax  
;------------- 
pop ax   
div cx  
;--------------- 
mov cx,dx  
mov dx,bx  

;-----------  
pop bx  

ret  



;------------------------------------------------------------show_str------------------

show_str:  

push es  
push ax  
push di  
push dx  
push si 
push cx 

;------------  
e_s:  
mov ax,0b800h   
mov es,ax  

;------------  
pointer:  
mov ah,0  
mov al,0a0h  
mul dh  
mov dh,0  
add dl,dl  
add ax,dx  
mov di,ax  
;------------  
mov ah,cl  
mov ch,0  
;-------------  
s:  
mov al,[si]  
mov cl,al  
jcxz stop  
mov es:[di],ax  
inc si  
add di,2  
jmp short s  

;-------------  
stop: 
pop cx 
pop si  
pop dx  
pop di  
pop ax  
pop es  

ret
chaplinyip
[第1楼]   [ 回复时间:2011-08-03 19:35 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:1
注册日期:2011-07-28 10:58
我知道怎么一回事了
竟然把code ends 
end main 
放上去了
啊,竟然纠结了那么久
chinatree
[第2楼]   [ 回复时间:2011-08-03 21:37 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
还有,定义子程序的时候怎么不加Proc
chaplinyip
[第3楼]   [ 回复时间:2011-08-06 17:41 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:1
注册日期:2011-07-28 10:58
此贴由 贴主 于 [ 2011-08-06 17:41 ] 结贴。 结贴原因:问题已解决
得分情况: 2楼(chinatree):2分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved