1 / 24

第 6 章 汇编语言程序设计

第 6 章 汇编语言程序设计. 本章主要教学内容. l    汇编程序基本语法 l    Debug 基本运用 l     程序设计综合实例. 汇编程序整体结构. 汇编程序总体可分为两部分,即 数据定义部分(数据段) 代码部分(代码段). 数据定义语法规范(伪操作). 一般格式: 符号地址 助记符 数据值. 符号地址:偏移地址的符号化表示 助记符: 用来描述数据类型,分别是 DB :字节 DW :字 DD :双字 数据值: 可以是具体数、表达式、字符、字符串. 数据段定义举例. …. number1. 640. 3AH. -2.

aerona
Download Presentation

第 6 章 汇编语言程序设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第6章 汇编语言程序设计 本章主要教学内容 l    汇编程序基本语法 l    Debug基本运用 l    程序设计综合实例

  2. 汇编程序整体结构 汇编程序总体可分为两部分,即 数据定义部分(数据段) 代码部分(代码段)

  3. 数据定义语法规范(伪操作) 一般格式:符号地址助记符数据值 符号地址:偏移地址的符号化表示 助记符:用来描述数据类型,分别是 DB:字节 DW:字 DD:双字 数据值:可以是具体数、表达式、字符、字符串

  4. 数据段定义举例 … number1 640 3AH -2 数 据 段 ave_value ? message t h e r e s …

  5. 常用操作符 ?:表示仅分配存储空间,但没有存储具体数值 DUP : 复制某个(些)操作数,其格式是: 重复次数DUP(操作数)

  6. 数据类型(属性)匹配问题 √ mov ax,array1 ╳ mov ax,array3 mov ax,word ptr array3 ╳ mov al,array1 mov al,byte ptr array1

  7. 代码段语法规范(伪操作) CODES SEGMENT ASSUME CS:CODES,DS:DATAS …… 具体代码 CODES ENDS END 代码部分首先要做的就是把事先定义的数据段的段地址送DS寄存器,一般如下: mov ax,datas mov ds,dx

  8. 子程序 子程序名PROC near(far) …… 具体代码 ret 子程序名ENDP 主程序中调用子程序可使用 CALL指令

  9. 汇编语言程序上机过程 1.硬件环境 目前8086汇编语言程序在IBM PC及其兼容机上运行 2.软件环境 (1)DOS操作系统 (2)宏汇编程序MASM (3)调试程序DEBUG

  10. 运行汇编语言程序的步骤 (1)用任何文本编辑程序建立扩展名为.ASM的源程序文件 (2)用宏汇编程序MASM(如微软宏汇编软件)将汇编语言源程序编译成可执行文件.EXE (3)在DOS命令状态下直接键入文件名就可执行该文件 备注: 若在编译过程中出现错误,根据错误信息提示(如语法、位置、类型、说明等),对源程序进行修改。

  11. BIOS调用 • IBM PC系列机在只读存储器中提供了BIOS基本的输入输出系统,它占用系统板上8K字节的ROM区,又称为ROM BIOS。它为用户程序和系统程序提供主要外设的控制功能,即系统加电自检、引导装入及对键盘、磁盘、磁带、显示器、打印机、异步串行通信口等控制。计算机系统软件就是利用这些基本的设备驱动程序,完成各种功能操作。每个功能模块的入口地址都在中断矢量表中,通过软中断指令INT n可以直接调用。n=8~1FH是中断类型号,每个类型号n对应一种I/O设备的中断调用,每个中断调用又以功能号区分控制功能。

  12. DOS 功能调用 • DOS磁盘操作系统的两个DOS模块:IBMBIO.COM和IBMDOS.COM,提供了更多的测试功能。DOS功能调用对硬件的依赖性更少,使DOS功能调用更方便、简单。 • DOS功能调用可完成对文件、设备、内存的管理。对用户来说,这些功能模块就是几十个独立的中断服务程序,这些程序的入口地址已由系统置入中断向量表中,在汇编语言程序中可用软中断指令直接调用。这样,用户就不必深入了解有关设备的电路和接口,只须遵照DOS规定的调用原则即可使用。

  13. DOS功能调用的方法 要完成系统功能调用,基本按如下步骤: • 将入口参数送到指定寄存器中; • 功能号送入AH寄存器中; • 使用INT 21H指令。

  14. 键盘输入 • 此调用的功能是等待键盘输入一个字符,并将字符的键值(ASCII码)送入AL寄存器中,并在屏幕上显示该字符。 • 此调用没有入口参数。相当于C语言的Scanf • 功能号:01H送AH 例如:下列语句可实现键盘输入。 MOV AH,01H INT 21H

  15. 显示一个字符 • 此调用的功能是在显示器上显示一个字符。 • 入口参数:被显示字符的ASCII送DL • 功能号:02H送AH • 例如:要在屏幕上显示‘$’符号,可用以下指令序列 MOV DL,’$’ 或 mov dl,24H MOV AH,02H INT 21H

  16. 输出字符串 • 此调用的功能是在显示器上输出一个字符串。 • 入口参数:字符串的首地址送DX • 功能号:09H送AH • 例如:要在屏幕上显示’hello$’,可用以下指令序列 LEA DX,MESSAGE MOV AH,09H INT 21H

  17. Debug基本运用 DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具, 可以用它检查(修改)内存中任何地方的内容。 也可以用于逐条指令执行某个程序以验证程序运行的正确性。

  18. 一个简单的求和例子

  19. Debug常用命令之 -U(反汇编)

  20. Debug常用命令之 -T(单步执行)

  21. Debug常用命令之 -G(指定执行)

  22. Debug常用命令之 -D(查看内存)

  23. 随堂练习 任意给定一个数,统计其二进制表示形式中“1”的个数 举个例子,假设数是 3451D,程序要给出该数中“1”的个数 任意给定若干数据,编程求出其中最大者 备注:可自己任意指定一组数据,也可参照以下数据:345,-2345,10,5345,0,1,89,13A9H

  24. 上机练习 若有 N =1+2+3+……+n,编程求使N 不超过16位数的最大n值 更进一步,尝试把结果以十六进制显示出来。

More Related