当前位置: 网学 > 编程文档 > 汇编语言 > 正文

汇编语言上机指导及例示

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式
t
out1 db ''Hello world''
out2 db ''My name is DJX''
data ends

code segment
assume cs:code;ds:data
start:
lea dx,out1
mov ah,2
int 21h

mov dl,0ah
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h

lea dx,out2
mov ah,9
int 21h
code ends
end start

再次进行PROCEDURE b进行编译,屏幕显示:

Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.

Object filename [error.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
51524 + 406492 Bytes symbol space free

0 Warning Errors
0 Severe Errors

本程序在语句上已无错误。
再执行PROCEDURE d连接为可执行文件(link error回车),屏幕显示:

Microsoft (R) Overlay Linker Version 3.60
Copyright (C) Microsoft Corp 1983-1987. All rights reserved.

Run File [ERROR.EXE]:
List File [NUL.MAP]:
Libraries [.LIB]:
LINK : warning L4021: no stack segment

这时error.exe可执行文件已存在,可以执行PROCEDURE e来运行看一看是否正确
在dos提示符下键入:error回车(小心!!!)
屏幕显示:乱码,并死机。reset My computer!
说明程序在逻辑上有错误,并且严重。
这是就要用PROCEDURE f,用调试工具调试,查找错误。
在DOS提示符下键入:debug error.exe回车
屏幕出现 - 提示符,这时就可以用DEBUG的命令来找错误了,
我首先用d命令来查看数据区和内容,发展所定义的两个字符串并不在数据段的段首,而在数据段内的100h位置上,这时才想起masm有一个不成文的规定,那就是在定义完数据段后,所定义的变量均向后100h个单元,需要我们将ds段寄存器置位,在程序的start:后面加上如下指令:(执行PROCEDURE a)
mov ax,data
mov ds,ax
再执行PROCEDURE b,PROCEDURE d,PROCEDURE e来运行程序,
屏幕显示:
换行
My name is DJX及乱码,并死机。(又要重新启动!)
再次执行PROCEDURE a检查程序,发现:
1.汇编语言有规定每个字符串应由$结尾
2.在输出第一个串的语句中的AH子功能号应为09H
将以上两点改正。
再执行PROCEDURE b,PROCEDURE d,PROCEDURE e来运行程序,
屏幕显示:
Hello world
My name is DJX并死机,不能返回DOS
原因分析,在程序中没有返回DOS的指令,更正:
用PROCEDURE a来进行编辑:
用DOS 21H中断的4cH子功能便可返回DOS,在code ends前加:
mov ah,4ch
int 21h
再执行PROCEDURE b,PROCEDURE d,PROCEDURE e来运行程序,
屏幕显示:
Hello word
My name is DJX
并返回DOS
成功!
这样一个程序就调试完成,并正确。
下面是正确的源程序:

data segment
out1 db ''Hello world

  • 下一篇资讯: TASM V5.0安装及注意事项
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号
    '
    out2 db ''My name is DJX
    上一页1234
    点击进入论坛和大家一起交流设计,分享设计素材,结交设计朋友
  • 上一篇资讯: 用汇编编写DOS下的内存驻留程序(3):中断矢量
  • 下一篇资讯: TASM V5.0安装及注意事项
  • 相关资讯

    网学推荐

    免费论文

    原创论文

    文章排行榜

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号
    '
    data ends

    code segment
    assume cs:code;ds:data
    start:
    mov ax,data
    mov ds,ax

    lea dx,out1
    mov ah,9
    int 21h

    mov dl,0ah
    mov ah,2
    int 21h
    mov dl,0dh
    mov ah,2
    int 21h

    lea dx,out2
    mov ah,9
    int 21h

    mov ah,4ch
    int 21h
    code ends
    end start

    以上这个程序很简单,只是为了说明实现汇编语言的上机编程及调试过程,汇编语言须多练习才能掌握它的特点,以便顺利通过考试

    上一页1234
    点击进入论坛和大家一起交流设计,分享设计素材,结交设计朋友
  • 上一篇资讯: 用汇编编写DOS下的内存驻留程序(3):中断矢量
  • 下一篇资讯: TASM V5.0安装及注意事项
  • 相关资讯

    网学推荐

    免费论文

    原创论文

    文章排行榜

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号