call后面的标号,需要定义嘛?
本帖最后由 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,
mov ch,0
jcxz ok
and byte ptr ,11011111b
inc si
jmp short change
ok:pop si
pop cx
ret
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,
mov ch,0
jcxz ok
and byte ptr ,11011111b
inc si
jmp short change
ok:pop si
pop cx
ret
应该这样
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
capital:
push cx
push si
change:
mov cl,
mov ch,0
jcxz ok
and byte ptr ,11011111b
inc si
jmp short change
ok:
pop si
pop cx
ret
code ends
end start
十分感谢,你说的非常正确,因为一开始我按书上的格式写的,最后没有‘code ends和end start’这两句,编译的时候它提示我没有结束语句,我就把这两句给添到那个位置去了,没想到放错了地方,又学习了,
页:
[1]