汇编网首页登录博客注册
masmaster的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
文章收藏

[2010-09-16 22:48] 习题4.36

写一个程序实现如下功能:把内存区域最低端的1K字节存放到文件mem.dat中。

答:
;----------------------------------------------------;
assume        cs:code,ds:data,ss:stack
data        segment
fname        db        'mem.dat',0      ;文件名
org        10h                      ;指定缓冲区地址
buffer        db        1024 dup (0)     ;预留缓冲区
fhand        dw        0                ;文件句柄
errmsg        db        'Error!$'
data        ends
stack        segment stack            ;定义栈段
        dw 128 dup (0)
stack        ends
code        segment
start:
        mov ax,data              ;定义数据段
        mov ds,ax
        mov ax,0                 ;定义附加段
        mov es,ax
        mov si,0                 ;附加段首地址
        mov di,offset buffer     ;数据段首地址
        mov cx,1024/2            ;传送次数
cp:        mov ax,es:[si]           ;开始复制
        mov [di],ax
        add si,2
        add di,2
        loop cp                  ;复制结束
;创建文件
        mov ax,3c00h
        mov dx,offset fname
        mov cx,0
        int 21h
        jc err
        mov fhand,ax
;打开文件
        mov ax,3d02h
        mov bx,fhand
        mov dx,offset fname
        int 21h
        jc err
;写入文件
        mov ah,40h
        mov bx,fhand
        mov cx,1024
        mov dx,offset buffer
        int 21h
        jc err
;关闭文件
        mov ah,3eh
        mov bx,fhand
        int 21h
        jc err
        jmp over
;出错信息
err:        
        mov dx,offset errmsg
        mov ah,9
        int 21h
;返回DOS
over:        
        mov ah,4ch
        int 21h
code        ends
end        start
;----------------------------------------------------;
评论次数(0)  |  浏览次数(291)  |  类型(汇编习题集) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码