第三章 汇编语言程序实例以及上机操作

目录

3.1汇编语言的系统工作文件

3.2 程序实例的上机步骤

3.3.1 编辑 -- 建立ASM源程序文件

3.3.2 汇编 -- 产生OBJ二进制目标文件

3.3.3 连接 -- 产生EXE可执行文件

3.3.4 关于LST列表文件

3.3.5 程序的运行和调试

1. 反汇编命令U

2.运行程序命令G

3. 跟踪程序命令T

4. 单步执行程序指令P

5. 退出命令Q

3.3 常用的DOS系统功能调用

1. 键盘输入一个字符并回显—01H

2. 显示一个字符-02H

3. 显示字符串-09H

4. 键盘输入到缓冲区-0AH

5. 结束程序返回DOS-4CH

3.1汇编语言的系统工作文件

  1. 使用编辑程序编辑源程序文件(.asm)使用汇编程序(MASM)将源程序文件(.asm)汇编成目标文件(.obj)

  2. 使用连接程序(LINK),将目标文件(.obj)连接成可执行文件(.EXE)

  3. 使用调试程序(DEBUG),调试可执行文件

运行汇编语言程序需要以下文件:

3.2 程序实例的上机步骤

3.3.1 编辑 -- 建立ASM源程序文件

 D: \>MASM6.15\>EDIT HELLO.ASM 

3.3.2 汇编 -- 产生OBJ二进制目标文件

 D: \>MASM6.15\>MASM  HELLO

3.3.3 连接 -- 产生EXE可执行文件

 D: \>MASM6.15\>LINK  HELLO 

3.3.4 关于LST列表文件

 D: \>MASM6.15\>MASM  HELLO HELLO HELLO

列表文件报告了汇编过程中产生的很多有价值的参考信息。主要包括源程序和机器语言清单、指令和变量的偏移地址等等。

3.3.5 程序的运行和调试

运行:

   D>Hello

调试:

 DEBUG Hello.EXE

1. 反汇编命令U

格式:U 地址

2.运行程序命令G

格式:G[=起始地址] [中止地址]

  • 若省掉起始地址,则以当前CS:IP作为起始地址。

  • 默认段地址在段寄存器CS中。

3. 跟踪程序命令T

格式1:T[=起始地址]

  • 单步执行程序,在指令执行中逐条进行跟踪,若省去地址,则从CS:IP现行值执行。

格式2:T[=起始地址] [指令条数]

  • 可对多条指令进行跟踪。

  • 注意:对于INT指令不能使用T命令跟踪。

4. 单步执行程序指令P

P命令,用以执行循环、重复的字符串指令、软件中断或子例程。

例如T命令无法一次执行的INT指令,P命令就可以一次执行完这个系统例行程序,回到用户程序中。

5. 退出命令Q

Q命令退出DEBUG。

3.3 常用的DOS系统功能调用

21H号中断:是DOS提供给用户的用于调用系统功能的中断,主要包括设备管理、目录管理和文件管理三个方面的功能。

功能调用的格式:

1. 键盘输入一个字符并回显—01H

  mov ah,01h ;功能号:ah←01h
     int 21h ;功能调用
     cmp al,’Y’  ;处理出口参数al
     je yeskey   ;是“Y”
     cmp al,’N’
     je nokey    ;是“N”
     yeskey: ...
     nokey:  ...

2. 显示一个字符-02H

例:在当前显示器光标位置显示一个问号

  mov ah,02h ;设置功能号:ah←02h
     mov dl,'?'  ;提供入口参数:dl←'?'
     int 21h          ;DOS功能调用:显示问号

3. 显示字符串-09H

例:string db 'Hello,Everybody! $‘ ;在数据段定义要显示的字符串

 ...
     mov ah,09h        ;设置功能号 ah←09h
     mov dx, offset string;提供入口参数 dx←字符串的偏移地址
     int 21h            ;DOS功能调用字符串显示

4. 键盘输入到缓冲区-0AH

缓冲区的定义:

  • 第1字节事先填入最多欲接收的字符个数(包括回车字符,可以是1~255)

  • 第2字节将存放实际输入的字符个数(不包括回车符)

  • 第3字节开始将存放输入的字符串

  • 实际输入的字符数多于定义数时,多出的字符丢掉,且响铃   

buffer  db 81    ;定义缓冲区
                      ;第1个字节填入可能输入的最大字符数
     db ?                  ;存放实际输入的字符数
     db 81 dup(?)          ;存放输入的字符串
     ...
     mov dx, seg buffer  ;伪指令seg取得buffer的段地址
     mov ds, dx  ;设置数据段DS
     mov dx, offset buffer
     mov ah, 0ah
     int 21h

5. 结束程序返回DOS-4CH

 MOV AH,4CH
     INT 21H

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值