主题:我是初学者,帮忙看看一个小问题
vfdff
[专家分:740] 发布于 2005-10-12 23:20:00
stack segment stack
dw 100 dup (?)
stack ends
data segment
x1 db 'please input a letter','$' ;必须'$'结尾
x2 db 'zhongyunde','$' ;
data ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax
mov ah,1h
int 21h
cmp al,0
jz start
call far ptr xx2
code ends
xx2 proc far
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
mov dx,offset x2
mov ah, 9h
int 21h
ret
xx2 endp
end start
下面是出错提示
data emitted with no segment??
不知为什么有问题?
回复列表 (共17个回复)
沙发
erping [专家分:3660] 发布于 2005-10-13 11:32:00
;简单的改了一下,不知你的程序的本意是什么
stack segment stack
dw 100 dup (?)
stack ends
data segment
x1 db 'please input a letter','$' ;必须'$'结尾
x2 db 'zhongyunde','$' ;
data ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax
mov ah,1h
int 21h
cmp al,0
jz start
call xx2
xx2 proc
mov dx, offset x2
mov ah, 9h
int 21h
ret
xx2 endp
code ends
end start
板凳
attackiller [专家分:680] 发布于 2005-10-13 11:47:00
stack segment stack
dw 100 dup (?)
stack ends
data segment
x1 db 'please input a letter','$' ;必须'$'结尾
x2 db 'zhongyunde','$' ;
data ends
code segment
assume cs:code,ds:data,ss:stack
start: //这地方似乎要分配段基址
mov ax,data
mov ds,ax
mov ah,1h
int 21h
cmp al,0
jz start
call far ptr xx2
code ends
xx2 proc far
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
mov dx,offset x2
mov ah, 9h
int 21h
ret
xx2 endp
end start
3 楼
vfdff [专家分:740] 发布于 2005-10-14 23:23:00
想输出两个字符串
但是输第二个串的时候需要按0确定,否则只输出第一个串
还是没有输出呀 ?
不知怎么改
错误提示
unknown opcode byte: 65h
there is no such 8086 instruction
make sure you JMP over any DB or DW data declarations.
4 楼
vfdff [专家分:740] 发布于 2005-10-14 23:36:00
为什么总是没有输出
那个窗口一闪就没有拉
5 楼
daocaorenyu [专家分:20] 发布于 2005-10-17 12:28:00
DATA SEGMENT
x1 db 'please input a letter:' ;必须'$'结尾
db 0ah,0dh,"$"
x2 db 'zhongyunde','$' ;
DATA ends
code segment
assume cs:code,ds:data
start:
mov ax,DATA
mov ds,ax
jie: lea dx,x1
mov ah,09h
int 21h
mov ah,1h
int 21h
cmp al,"0"
loopnz jie
mov dx,offset x2
mov ah,09h
int 21h
MOV AH,4ch
INT 21h
code ENDS
END start
6 楼
vfdff [专家分:740] 发布于 2005-10-19 12:27:00
cmp al,"0"
与
cmp al,'0'有什么区别
7 楼
牙齿晒太阳 [专家分:0] 发布于 2005-10-21 11:01:00
没有区别
两个用法是一样的
8 楼
vfdff [专家分:740] 发布于 2005-10-21 23:43:00
难道汇编中字符串与字符是不分的吗??
9 楼
vfdff [专家分:740] 发布于 2005-11-22 23:14:00
谢谢你们的帮忙,一直没有给你们这些功臣加分 ,不好意思哦
现在终于明白拉
原来只是窗口显示时间太短,来不及观看而已
谢谢大家拉
10 楼
Frigate [专家分:360] 发布于 2005-11-23 20:56:00
服了
程序中的call ***有个屁用啊
既然是直接引用下面的子程序
那就不需要子程序了
直接一点就好,而且 你的程序call完后还得执行 下面的子程序语句
然后最后 ret 返回多了,那原先dos 压栈的内容就被你弹到cs:ip中
那就是中断的 int 20h
所以就返回了
我来回复