第六章汇编语言及其程序设计
第六章 汇编语言及其程序设计
主要内容 汇编程序及其开发过程 指令格式及寻址方式 8086汇编语言的基本语法 顺序、分支、循环结构程序设计 ■子程序设计
主要内容 ◼ 汇编程序及其开发过程 ◼ 指令格式及寻址方式 ◼ 8086汇编语言的基本语法 ◼ 顺序、分支、循环结构程序设计 ◼ 子程序设计
汇编语言程序及开发过程 ■基本概念 汇编语言:是一种面向机器的程序设计语言, 它是机器语言的符号化描述。 特点:代码短、空间省、效率高 汇编语言源程序:用汇编语言编写的程序 ■且标程序:汇编语言经翻译程序翻译成的代 码程序(即机器语言的程序)。 汇编程序:把源程序转变为相应目标程序的 翻译程序
汇编语言程序及开发过程 ◼ 基本概念 ◼ 汇编语言:是一种面向机器的程序设计语言, 它是机器语言的符号化描述。 ◼ 特点:代码短、空间省、效率高 ◼ 汇编语言源程序:用汇编语言编写的程序 ◼ 目标程序:汇编语言经翻译程序翻译成的代 码程序(即机器语言的程序)。 ◼ 汇编程序:把源程序转变为相应目标程序的 翻译程序
宏汇编:不仅包含一般汇编语言的功能,而且 采用了高级语言使用的数据结构,是一种接近 高级语言的汇编语言 汇编语言程序的开发过程 ■编写源程序:EDI(DoS), TextPad( Windows) 将源程序保存为XXXX.asm文件 使用MASM生成目标程序 XXXX.OB 使用LINK生成可执行程序 XXXX.EXE
◼ 宏汇编:不仅包含一般汇编语言的功能,而且 采用了高级语言使用的数据结构,是一种接近 高级语言的汇编语言。 ◼ 汇编语言程序的开发过程 ◼ 编写源程序:EDIT(DOS),TextPad(Windows) ◼ 将源程序保存为 XXXX.asm 文件 ◼ 使用MASM生成目标程序 XXXX.OBJ ◼ 使用LINK生成可执行程序 XXXX.EXE
设计编辑/源程序\用MASM/目标程序用LINK/可执行程序\执行 Xasm/汇编Xobj/连接XXXe 使用汇编语言的过程
源程序 XXXX.asm 目标程序 XXXX.obj 可执行程序 XXXX.exe 设计编辑 用MASM 汇编 用LINK 连接 执行 使用汇编语言的过程
基本汇编语言程序实例 (1) DATA SEGMENT (2) String DB‘程序设计’,”$ 3 DATA ENDS (4) CODE SEGMENT (5) ASSUME CS: CODE, DS: DATA,SS: STACK (6 START: MOV AX, DATA MOV DS.AX (8 MO DX,OFFSET String MOV AH,9 aH= 9 (10 int 21H MOV AX4C00H 功能:显示字符串 12 int 21H DS:DX=串地址 13) CODE ENDS 字符串以“$”结尾 14 STACK SEGMENT STACK (15 DB 256 DUP() AH= 40 (16 STACK ENDS 功能:带返回码终止 (17) END START AL=返回码
◼ 基本汇编语言程序实例 (1) DATA SEGMENT (2) String DB ‘程序设计’ , ”$” (3) DATA ENDS (4) CODE SEGMENT (5) ASSUME CS:CODE,DS:DATA,SS:STACK (6) START: MOV AX,DATA (7) MOV DS,AX (8) MOV DX,OFFSET String (9) MOV AH,9 (10) INT 21H (11) MOV AX,4C00H (12) INT 21H (13) CODE ENDS (14) STACK SEGMENT STACK (15) DB 256 DUP(?) (16) STACK ENDS (17) END START AH = 9 功能:显示字符串 DS:DX = 串地址 字符串以“$”结尾 AH = 4C 功能:带返回码终止 AL = 返回码
开始 用编辑工具编辑源程序 汇编语言程序 源程序 XXXX. asm 的开发过程 用MASM进行汇编 有语法错误? N 目标文件 XXXX. ob 用凵NK连接 有错误? 执行可执行文件Xee|用 DEBUG调试 正确? 结束
◼ 汇编语言程序 的开发过程 开 始 结 束 用编辑工具编辑源程序 源程序 XXXX.asm 用MASM进行汇编 有语法错误? Y N 目标文件 XXXX.obj 用LINK连接 有错误? Y N 执行可执行文件XXXX.exe 正确? N Y 用DEBUG调试
结构化程序设计 程序设计的基本步骤 ■分析问题 确定处理方案 确定具体操作步骤,绘制流程图 编写程序 调试并运行程序,得到预期结果 整理输出结果,写出有关文档资料
◼ 结构化程序设计 ◼ 程序设计的基本步骤 ◼ 分析问题 ◼ 确定处理方案 ◼ 确定具体操作步骤,绘制流程图 ◼ 编写程序 ◼ 调试并运行程序,得到预期结果 ◼ 整理输出结果,写出有关文档资料
流程图的画法 起止框 执行框 流程线 条件满足? 条件满足?y A A 判断框 连接点
◼ 流程图的画法 起止框 执行框 流程线 条件满足? 条件满足? Y Y N N 判断框 A A 连接点
指令格式及寻址方式 ■指令格式 操作码 操作数 方向位,0:REG字段指出的寄存器为源操作数寄存器 1:REG字段指出的寄存器为目的操作数寄存器 字位,0:参加运算的操作数为字节操作数 1:参加运算的操作数为字操作数 形式1 OP CODEDW 0 1~2个字节1~2个字节 形式2 OPCODE W MOD REGR/ M DATA/DISP DATA/DISP 01~2个字节1~2个字节 形式3 OPCODED W DATA/DISP| DATA/DISP
指令格式及寻址方式 ◼ 指令格式 操 作 码 操 作 数 OP CODE D W 7 2 1 0 形式1 OP CODE D W 7 2 1 0 形式2 OP CODE D W 7 2 1 0 形式3 DATA/DISP DATA/DISP 1~2个字节 1~2个字节 MOD REG R / M DATA/DISP DATA/DISP 1~2个字节 1~2个字节 方向位,0:REG字段指出的寄存器为源操作数寄存器 1:REG字段指出的寄存器为目的操作数寄存器 字位,0:参加运算的操作数为字节操作数 1:参加运算的操作数为字操作数