回 帖 发 新 帖 刷新版面

主题:文件问题啊!汗(30分)(急....)

我想把一个文件的数据写入内存缓冲区中!但是,他没有正确的工作!
调试了半天没瞅出什么问题?高人指教!
拜........................附上.asm
data     segment    
filebuf db  20 dup(0);放文件名
musbuf  db  256 dup('.'),'$';内存缓冲区,
info    db  'enter :','$',0;输出提示
data ends
code segment 
assume cs:code,ds:data
start:    mov ax,data
    mov ds,ax
    mov ah,09h
    lea dx,info
    int 21h

    ;输入文件名
    lea dx,filebuf
    mov ah,0ah
    int 21h
    
    ;打开文件
          mov dx,offset filebuf
    ;add dx,2;此处是2还是4?或没有!???????
    mov ax,3d00h
    int 21h
    
    ;将文件输出到musbuf 中
         mov bx,ax
    lea dx,musbuf
    mov cx,10
    mov ah,3fh
    int 21h

    ;显示结果
         mov dx,offset musbuf
    mov ah,09h
    int 21h
    
    mov ah,4ch
    int 21h
code     ends 
    end     start

回复列表 (共6个回复)

沙发

对汇编了解不怎么深,无能为力啊!

板凳

今天晚上帮你完成,等等.

3 楼

修改后的程序,问题主要是你对键盘输入的处理不了解造成的。
修改了3个地方。

data     segment    
filebuf db  20,0,20 dup(0)    ;放文件名 ,-----修改的地方1
musbuf  db  256 dup('.'),'$'    ;内存缓冲区,
info    db  'enter :','$',0    ;输出提示
data ends
code segment 
assume cs:code,ds:data
start:   
         mov ax,data
    mov ds,ax
    
    mov ah,09h
    lea dx,info
    int 21h

    ;输入文件名
    lea dx,filebuf
    mov ah,0ah
    int 21h
        ;-------修改的地方2,这个地方很重要,把最后的回车的ASCII 0DH修改为0.
        mov    si,offset filebuf
        mov    al,[si+1]
        xor    ah,ah
        add    si,2
        add    si,ax    
        mov    byte ptr [si],0
    ;打开文件
    mov dx,offset filebuf
    add dx,2    ;此处是2还是4?或没有!???????,------修改3,是加2
    mov ax,3d00h
    int 21h
    
    
    ;将文件输出到musbuf 中
    ;push ax
    mov bx,ax
    lea dx,musbuf
    mov cx,10
    mov ah,3fh
    int 21h

    ;显示结果
     mov dx,offset musbuf
    mov ah,09h
    int 21h
    
      ;mov bx,ax
      mov    ah,3eh
      int    21h
    
    mov ah,4ch
    int 21h
code     ends 
    end     start

4 楼

haha ,感谢啊!!
这是我的硬件设计的一个子程序,我想给他加一些交互所出现的问题!
再次感谢!有50分的话,我都会给你!

5 楼

做的是什么的硬件设计~.~,居然用DOS中断。
用习惯了BOIS中断,对DOS都不熟悉了~感觉DOS中断很多地方都很罗嗦。
上面说错了,是4个地方,还有关闭文件。

6 楼

是的 ,我加了关闭

,不是很成功的
硬件设计!可存储式电子琴。有时间练练bios。

我来回复

您尚未登录,请登录后再回复。点此登录或注册