. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->自由讨论区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  提示遇到无效指令的问题  [已解决] 回复[ 3次 ]   点击[ 256次 ]  
wanzhao
[帖 主]   [ 发表时间:2009-12-17 12:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-08-09 10:57
这是我的源程序:
data segment
 huan db 0dh,0ah,'$'
 month db 'jan 2001',0dh,0ah,'$'
 weeks db 'mon  tue  wed  thu  fri  sau  sun',0dh,0ah,'$'
data ends
stack segment stack
 db 1024 dup(?)
stack ends

code segment
 assume cs:code,ds:data,ss:stack
 main proc far 
start:
 push ds
 xor ax,ax
 push ax
 mov ax,data
 mov ds,ax
 mov ax,stack
 mov ss,ax
 lea dx,month
 mov ah,9
 int 21h
 lea dx,weeks
 mov ah,9
 int 21h
 mov cx,9
 mov ax,1
 mov bx,0
s:
 push ax
 push cx
 add ax,30h
 and ax,00ffh
 mov dl,al
 mov ah,2
 int 21h
 mov cx,4
k:
 mov ax,20h
 and ax,00ffh
 mov dl,ah
 mov ah,2
 int 21h
 loop k
 pop cx
 pop ax
 
 inc bx
 cmp bx,7
 jne w
 call huiche


w:
 inc ax
 loop s
  

huiche proc near
 lea dx,huan
 mov ah,9
 int 21h
 mov bx,0
 
 iret
huiche endp
 
code ends
end start



当我把call huiche 注释掉时就没有这个提示,请各位帮帮忙看看
scuzg
[第1楼]   [ 回复时间:2009-12-17 17:55 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
子程序应该放在用于“结束程序、返回操作系统”ret 指令的后面,但楼主漏写了这条指令^_^:
        ....
        loop s 
        ret
huiche  proc near 
        lea dx,huan 
        mov ah,9 
        int 21h 
        mov bx,0 
        ;另外子程序返回指令不是 iret 而是
         ret  
huiche  endp
wanzhao
[第2楼]   [ 回复时间:2009-12-20 16:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-08-09 10:57
回复:[第1楼]
------------------
thanks 问题解决了
wanzhao
[第3楼]   [ 回复时间:2009-12-20 16:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-08-09 10:57
此贴由 贴主 于 [ 2009-12-20 16:04 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(scuzg):4分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved