. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->《IBM-PC汇编语言程序设计》支持区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  为什么我用int 21H的3FH功能会出错啊???  [待解决] 回复[ 2次 ]   点击[ 474次 ]  
yezuopou
[帖 主]   [ 发表时间:2009-12-21 22:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-06 23:23
datatoinput    db    12 dup(' ')    ;这里是数据段部分定义
……
以下是代码段部分内容:
    ;int 21H的3FH功能用文件代号接受输入
     s:        mov        ax,3FH           ;(ax)=功能号
        mov        bx,0       ;(bx)=文件代号,0表示输入设备,键盘
        mov         cx,0CH     ;(cx)=最大字符数
        mov        dx,offset datatoinput  ;(dx)=输入数据区
        int         21H
        jmp        s

我是按《IBM PC汇编语言程序设计(第五版)》第八章第10节上面做的,但是执行的时候出错啊!以下2种情况:
(1)直接在debug中输入代码,本来这个程序应该在int 21H执行时接受键盘输入的,但是在Debug中输入g,程序就直接提示“Program terminated normally!”,并没有停下来接受键盘输入。
(2)在记事本编辑好1.asm,然后link,最后debug 1.exe ,然后再g执行程序,结果就弹出一个对话框,就是经常可以见到的上面有“关闭”,“忽略”两个按钮的那种消息框。

请问为什么会出错呢?我按书上的写的啊
scuzg
[第1楼]   [ 回复时间:2009-12-21 23:48 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
-a
13CF:0100 mov ah,3f      ;问题可能在这里吧?功能号应该给 ah
13CF:0102 mov bx,0
13CF:0105 mov cx,14
13CF:0108 mov dx,200
13CF:010B int 21
13CF:010D int 3
13CF:010E
-g=100
abcdefghijklmn

AX=0010  BX=0000  CX=0014  DX=0200  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=13CF  ES=13CF  SS=13CF  CS=13CF  IP=010D   NV UP EI PL NZ NA PO NC
13CF:010D CC            INT     3
-d200 210
13CF:0200  61 62 63 64 65 66 67 68-69 6A 6B 6C 6D 6E 0D 0A   abcdefghijklmn..
13CF:0210  00                                                .
yezuopou
[第2楼]   [ 回复时间:2009-12-22 14:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-06 23:23
非常感谢!!我改正过后就可以了!
看来是学得头晕掉了,呵呵!竟然没发现这个错误!!!
谢谢谢谢!!!
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved