正文

今天郁闷了2007-06-12 22:30:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wfxsky/26734.html

分享到:

今天遇到了一个问题,一直没解决啊,很简单,就是 ret 和 mov ax,4c00h int 21h 的区别啊,我问了很多人,他们都说是一样的只不过前者返回过程,后者是直接返回 dos 但我在做一个题时遇到问题觉得他们说的都不准确啊,请看: DATA SEGMENTMESG1 db 0DH,0AH,'FOUND$'MESG2 Db 0DH,0AH,'NO FOUND$'MESG3 Db 'ENTER KEYWORD:$'BUFFER  DW  3213,5128,57826,7632,1387        DW  45321,928,9876,1899,45678COUNT dw 10ADDR  DW   0DATA ENDSCODE SEGMENT  ASSUME  CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AH,9MOV DX,OFFSET MESG3INT 21HCALL  DECIBINMOV  AX,BXMOV   DI,OFFSET BUFFERMOV  CX,COUNTNEXT:     CMP AX,[DI]          JE  OK          ADD  DI,2          LOOP  NEXT          MOV ADDR,-1          MOV  DX,OFFSET  MESG2          JMP   SHORT DISPLAYOK:       MOV  ADDR,DI          MOV   DX,OFFSET MESG DISPLAY:              MOV   AH,9          INT   21H          mov ax,4c00h           int 21h DECIBIN   PROC   NEARMOV   BX,0NEWCHAR:    MOV    AH,1INT    21HSUB  AL,30HJL    EXITCMP  AL,9JG   EXITCBWXCHG   AX,BXMOV   CX,10MUL   CXXCHG   AX,BXADD   BX,AXJMP   NEWCHAREXIT:       RETDECIBIN  ENDPCODE  ENDS         END START这个程序完成从键盘输入的一个数,然后查找,找到显示found 否则显示no found 这个程序没有主过程,显示正确,我把上面mov ax,4c00h   int  21h 去掉,加上主过程,即:加上 DATA SEGMENTMESG1 db 0DH,0AH,'FOUND$'MESG2 Db 0DH,0AH,'NO FOUND$'MESG3 Db 'ENTER KEYWORD:$'BUFFER  DW  3213,5128,57826,7632,1387        DW  45321,928,9876,1899,45678COUNT dw 10ADDR  DW   0DATA ENDS CODE SEGMENT main proc far                         ;主过程  ASSUME  CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AH,9MOV DX,OFFSET MESG3INT 21HCALL  DECIBINMOV  AX,BXMOV   DI,OFFSET BUFFERMOV  CX,COUNTNEXT:     CMP AX,[DI]          JE  OK          ADD  DI,2          LOOP  NEXT          MOV ADDR,-1          MOV  DX,OFFSET  MESG2          JMP   SHORT DISPLAYOK:       MOV  ADDR,DI          MOV   DX,OFFSET MESG DISPLAY:              MOV   AH,9          INT   21H      ret main endp                                        ;main 过程 DECIBIN   PROC   NEARMOV   BX,0NEWCHAR:    MOV    AH,1INT    21HSUB  AL,30HJL    EXITCMP  AL,9JG   EXITCBWXCHG   AX,BXMOV   CX,10MUL   CXXCHG   AX,BXADD   BX,AXJMP   NEWCHAREXIT:       RETDECIBIN  ENDPCODE  ENDS         END START上面却不能输出,只有输入,如果一样为什么不对啊,我郁闷了好几天了,谁能解答啊  

阅读(2845) | 评论(4)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册