第六章 汇编语言及其程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(9)
MOV AH,9
(10)
INT 21H
(11)
MOV AX,4C00H
(12)
INT 21H
(13) CODE ENDS
AH = 9 功能:显示字符串
DS:DX = 串地址 字符串以“$”结尾
(14) STACK SEGMENT STACK
(15)
DB 256 DUP(?)
(16) STACK ENDS
7
2 1 0 1~2个字节 1~2个字节
形式3 OP CODE D W DATA/DISP DATA/DISP
MOD字段编码表
MOD 00 10
含义 存储器方式,无位移量 存储器方式,有16位位移量
MOD 01 11
含义 存储器方式,有8位位移量
寄存器方式,无位移量
REG字段编码表
REG
W=1
W=0
子程序调用 子程序返回 无条件转移 条件转移
循环 条件循环 寄存器CX=0转移
中断 中断返回
CALL RET JMP JZ,JNZ,JC,JNC,JO,JNO,JS,JNS,JP,J NP,JA,JAE,JB,JBE,JG,JGE,JL,JLE LOOP LOOPNE , LOOPE JCXZ INT , INTO IRET
REG
W=1
W=0
000
AX
AL
100
SP
AH
001
CX
CL
101
BP
CH
010
DX
DL
110
SI
DH
011
BX
BL
111
DI
BH
MOD
R/M
000 001 010 011 100 101 110 111
存储器方式
有效地址的计算公式
00
01
10
(BX)+(SI) (BX)+(SI)+D8
(BX)+(DI) (BX)+(DI) +D8
(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
第六章 汇编语言及其程序设计
主要内容
❖ 汇编程序及其开发过程 ❖ 指令格式及寻址方式 ❖ 8086汇编语言的基本语法 ❖ 顺序、分支、循环结构程序设计 ❖ 子程序设计
汇编语言程序及开发过程
❖ 基本概念
汇编语言:是一种面向机器的程序设计语言 ,它是机器语言的符号化描述。
❖特点:代码短、空间省、效率高
汇编语言源程序:用汇编语言编写的程序 目标程序:汇编语言经翻译程序翻译成的代
码程序(即机器语言的程序)。 汇编程序:把源程序转变为相应目标程序的
翻译程序
宏汇编:不仅包含一般汇编语言的功能,而且 采用了高级语言使用的数据结构,是一种接近 高级语言的汇编语言。
汇编语言程序的开发过程
❖编写源程序:EDIT(DOS),TextPad(Windows )
方向位,0:REG字段指出的寄存器为源操作数寄存器 1:REG字段指出的寄存器为目的操作数寄存器
字位,0:参加运算的操作数为字节操作数 1:参加运算的操作数为字操作数
7
21 0
形式1 OP CODE D W
7
21 0
1~2个字节 1~2个字节
形式2 OP CODE D W MOD REG R / M DATA/DISP DATA/DISP
XCHG IN , OUT
XLAT LEA , LDS , LES PUSHF , POPF , LAHF , SAHF
算术运算指令(20条)wenku.baidu.com
加法 加“1” 减法 减“1” 比较 求补 乘法 除法 符号扩展
ADD , ADC , AAA , DAA INC
SUB , SBB , AAS , DAS DEC CMP NEG
(17)
END START
AH = 4C 功能:带返回码终止 AL = 返回码
❖ 汇编语言程序 的开发过程
开始
用编辑工具编辑源程序
源程序 XXXX.asm
用MASM进行汇编
有语法错误?
Y
N
目标文件 XXXX.obj
用LINK连接
有错误?
Y
N
执行可执行文件XXXX.exe
正确?
N
Y
结束
用DEBUG调试
❖将源程序保存为 XXXX.asm 文件 ❖使用MASM生成目标程序 XXXX.OBJ ❖使用LINK生成可执行程序 XXXX.EXE
设计编辑 源程序 用MASM 目标程序 用LINK 可执行程序 执行 XXXX.asm 汇编 XXXX.obj 连接 XXXX.exe
使用汇编语言的过程
❖ 基本汇编语言程序实例
MUL , IMUL , AAM DIV , IDIV, AAD CBW , CWD
逻辑运算指令(13条)
求反 逻辑乘 逻辑加 异或 测试位 左/右移位 左/右循环移位
NOT AND OR XOR TEST SHL , SHR , SAL , SAR ROL , ROR , RCL , RCR
字符串指令(10条)
(BP)+(SI) (BP)+(SI) +D8
(BP)+(DI) (BP)+(DI) +D8
(SI)
(SI) +D8
(DI)
(DI) +D8
D16
(BP) +D8
(BX)
(BX) +D8
(BX)+(SI)+D16 (BX)+(DI) +D16 (BP)+(SI) +D16 (BP)+(DI) +D16
传送串 串比较 串扫描 取字符串 存字符串 重复前缀
MOVS , MOVSB/MOVSW CMPS , CMPSB/CMPSW SCAS , SCASB/SCASW LODS , LODSB/LODSW STOS , STOSB/STOSW
REP , REPZ , REPNZ
控制转移指令(28条)
(SI) +D16 (DI) +D16 (BP) +D16 (BX) +D16
寄存器方式
W=0 W=1
11
AL
AX
CL
CX
DL
DX
BL
BX
AH
SP
CH
BP
DH
SI
BH
DI
❖ 8086/8088常用指令集
数据传送指令(14条)
传送 堆栈操作
交换 输入、输出
转换 地址传送 标志传送
MOV PUSH , POP
❖ 结构化程序设计
程序设计的基本步骤
❖分析问题 ❖确定处理方案 ❖确定具体操作步骤,绘制流程图 ❖编写程序 ❖调试并运行程序,得到预期结果 ❖整理输出结果,写出有关文档资料
流程图的画法
起止框
执行框
条件满足? Y
N
条件满足? Y
N
判断框
流程线
A A
连接点
指令格式及寻址方式
❖ 指令格式
操作码
操作数
相关文档
最新文档