微机原理汇编语言

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

ep5 11
第4章 汇编语言程序设计
4.2 汇编语言的基本语法和伪指令 1.汇编语言的基本语法 1)标号与变量 标号:是一条指令语句的符号地址。可作为转 移类指令的操作数,即转移地址。 变量:存放在某些存储单元中的值。
12
第4章 汇编语言程序设计
标号和变量具有三种属性 地址属性 ① 段属性 • 标号和变量对应存储单元的段地址 ② 偏移属性 • 标号和变量对应存储单元的偏移地址 ③ 类型属性 • 标号的类型可以是NEAR和FAR,分别表示段内 或段间 • 变量的类型可以是BYTE、WORD和DWORD等
13
第4章 汇编语言程序设计
变量、标号的命名

一般最多由31个字母、数字及规定的特殊符号 (.、 _、$、?、@)组成,不能以数字开头 .只能位于名字首 $、?不能单独作为名字 不区别标识符中的字母大小写 不能使用汇编语言的保留字
14
第4章 汇编语言程序设计
保留字



第4章 汇编语言程序设计
CMP AL,'1' JZ MANCNT CMP AL,'0' JZ WOMANCNT JMP INPUT MANCNT:INC DL JMP NEXT WOMANCNT:INC DH
NEXT:LOOP INPUT MOV MAN,DL MOV WOMAN,DH MOV AH,4CH INT 21H C_SEG ENDS END BEGIN
28
第4章 汇编语言程序设计
data segment count dw 8000h,?,'AB' number dw 64h array dw 2 dup(0) data ends
29
第4章 汇编语言程序设计
4)段定义伪指令
完整段定义伪指令 段名 segment 定位 组合 使用 ... ;语句序列 段名 ends SEGMENT定义一个逻辑段的开始 ENDS表示一个段的结束 4个关键字用于确定段的各种属性
18
第4章 汇编语言程序设计
③关系运算符

④分析运算符
• • • • •

• •


EQ(相等) NE(不等) LT(小于) GT(大于) LE(小于或等于) GE(大于或等于)
OFFSET SEG TYPE LENGTH SIZE
19
第4章 汇编语言程序设计
OFFSET 格式:OFFSET 变量或标号 功能:取其后变量或标号的偏移地址。 例如:MOV BX,OFFSET BUF SEG 格式:SEG 变量或标号 功能:取其后变量或标号所在段的段首址。 例如: MOV AX,SEG ABC MOV DS,AX
'类别'
30
第4章 汇编语言程序设计
段寄存器说明伪指令 ASSUME 段寄存器:段名 [,段寄存器名:段名, ...]

指定的段寄存器来寻址对应的逻辑段
注意:没有为段寄存器设定初值。
31
第4章 汇编语言程序设计

存储模式和简化段定义伪指令 存储模式伪指令 .MODEL 存储模式 .model必须位于所有段定义语句之前 存储模式决定一个程序的规模,确定进行子程 序调用、指令转移和数据访问的缺省属性 MASM的存储模式 ①TINY ②SMALL ③COMPACT ④MEDIUM ⑤LARGE ⑥HUGE ⑦FLAT
26
第4章 汇编语言程序设计
表达式的形式


• •

数值表达式 字符串表达式 地址表达式(适用DW和DD伪指令) ? 表达式 带DUP的表达式
27
第4章 汇编语言程序设计
data X
Y data
segment db 'a',-5 db 2 dup(100),? db 'ABC' ends
mov al,X dec X+1 mov Y,al
xor ax,ax mov cx,100 again: add ax,cx loop again mov sum,ax ret main endp code ends end main
ep3
8
第4章 汇编语言程序设计
4)简化格式 (.COM)
Ep4
.model tiny;微型存储模式 .code;只有代码段 .startup;程序起始点= ORG 100H mov dx,offset string mov ah,9;显示信息 int 21h mov ah,01h;等待按键 int 21h mov ah,02h;响铃 mov dl,07h int 21h .exit 0;程序结束点,返回DOS String db ‘Press any key to continue !$’ end;汇编结束
6
第4章 汇编语言程序设计
MOV AX,DATA MOV DS,AX MOV CX,10 LAST: MOV AH,9 MOV DX,OFFSET MESG INT 21H LOOP LAST MOV AH,4CH INT 21H CODE ENDS END BEG
ep2 7
第4章 汇编语言程序设计
36
第4章 汇编语言程序设计
.code .startup mov bx,offset ASCII mov al,hex and al,0fh xlat mov dl,al mov ah,2 int 21h .exit 0 end
37
第4章 汇编语言程序设计

例2:编写计算下面函数值的程序。 1 X>0
16
第4章 汇编语言程序设计
3) 运算符


算术运算符 逻辑运算符 关系运算符 分析运算符 综合运算符
17
第4章 汇编语言程序设计
①算术运算符

②逻辑运算符


• • •
+(加) -(减) *(乘) /(除) MOD(求模)

• •
AND(与) OR(或) XOR(异或) NOT(非)

35
第4章 汇编语言程序设计
4.3 基本结构程序设计举例

例1:实现一位16进制数转换为ASCII码显示。 (查表法) .model small .stack 256 .data ASCII db 30h,31h,32h,33h,34h,35h db 36h,37h,38h,39h db 41h,42h,43h,44h,45h,46h Hex db 0bh

32
第4章 汇编语言程序设计
简化段定义伪指令 .STACK [大小] ;堆栈段开始。参数指定字节数,默认是1KB .DATA ;数据段开始 .CODE [段名] ;代码段开始


一个逻辑段的开始,自动结束前面的一个段 段名称使用MASM预定义符号 例如:@data表示由.data定义的数据段的段名
33
第4章 汇编语言程序设计
5)过程定义伪指令
过程调用语句:CALL 过程名 过程返回语句:RET PROC_NAME PROC [NEAR]/FAR . . . RET PROC_NAME ENDP
34
第4章 汇编语言程序设计
6)源程序结束伪指令 END [标号] 指示汇编程序结束汇编过程 源程序的最后必须为END 标号用于指定程序开始执行点,连接程序将 据此设置CS:IP值 采用 .startup 不用“ end 标号”,而使用 “end”。
保留字(Reserved Word)是汇编程序已经利 用的标识符,主要有: 指令助记符——例如:MOV、ADD 伪指令助记符——例如:DB、EQU 运算符——例如:OFFSET、PTR 寄存器名——例如:AX、CS 预定义符号——例如:@data
15
第4章 汇编语言程序设计
2)常数
• •

常数表示一个固定的数值 数值常数 字符串常数 用引号括起来的单个字符或多个字符,其数 值是每个字符对应的ASCII码的值。 符号常数 利用一个标识符表达的一个数值。 例:DWriteChar equ 2
第4章 汇编语言程序设计
第4章 汇编语言程序设计
4.1 4.2 4.3 4.4 4.5 汇编语言程序格式及开发过程 汇编语言的基本语法和伪指令 基本结构程序设计举例 子程序结构程序设计举例 BIOS和DOS中断
1
第4章 汇编语言程序设计
4.1 汇编语言程序格式及开发过程

汇编语言——用指令的助记符、符号地址、标 号等符号书写程序的语言。 源程序—— 用汇编语言编写的程序。 汇编——把源程序翻译成机器语言程序的过程。 汇编程序——完成汇编任务的程序。
9
第4章 汇编语言程序设计
5)完整格式(.COM)
C_SEG SEGMENT ASSUME CS:C_SEG,DS:C_SEG,ES:C_SEG ORG 100H BEGIN: JMP START MAN DB ? WOMAN DB ? NUM DW 6 START: MOV CX,NUM MOV DX,0 INPUT: MOV AH,1 INT 21H 10
3)完整格式2 (.EXE) 例:计算100+99+98+…+2+1 data segment sum dw ? data ends code segment main proc far assume cs:code,ds:data push ds sub ax,ax push ax mov ax,data mov ds,ax
Y=
0
-1
X=0
X
2
第4章 汇编语言程序设计
汇编语言语句 三种基本语句: 指令语句(指令性语句) : 在汇编时产生一个目标代码。 伪指令语句(指示性语句): 无目标代码,为汇编程序服务。 宏指令语句
3
第4章 汇编语言程序设计
1. 汇 编 语 言 程 序 的 开 发 过 程
文本编辑器,如 EDIT.COM
20
第4章 汇编语言程序设计
⑤综合运算符


PTR THIS 类型名 PTR 名字/标号 使名字或标号具有指定的类型 类型名可以是:Leabharlann BaiduYTE/WORD/DWORD 或者是:NEAR/FAR
例如:mov al,byte ptr w_var jmp far ptr n_label ;

21
第4章 汇编语言程序设计
DB,DW,DD,DQ,DT。 格式: [变量名] 伪指令助记符 表达式 [,„] 功能:定义内存数据存储区,类型由伪指 令助记符确定,初值由表达式给定。
25
第4章 汇编语言程序设计
• • •


DB——定义字节伪指令 DW——定义字伪指令 DD——定义双字伪指令 DQ——定义4字伪指令 DT——定义10字节伪指令
编 辑
源程序:文件名.asm
错误
汇编程序,如 MASM.EXE
汇 编
目标模块:文件名.obj
错误
连接程序,如 LINK.EXE
连 接 可执行文件:文件名.exe
错误
调试程序,如 DEBUG.EXE
调 试 应用程序
错误 错误
4
第4章 汇编语言程序设计
2.汇编语言源程序格式 1)简化格式(.EXE) 例:计算M-N+P
2.伪指令
1)处理器选择伪指令 2)等值伪指令 3)定义存储单元伪指令 4)段定义伪指令 5)过程定义伪指令 6)源程序结束伪指令
22
第4章 汇编语言程序设计
1)处理器选择伪指令

.8086 .386 .386P .586 .586P
23
第4章 汇编语言程序设计
2)等值伪指令EQU
.MODEL SMALL .STACK 256 .DATA M DB 30H N DB 20H P DB 40H .CODE .STARTUP MOV BL,M MOV AL,BL SUB AL,N ADD AL,P .EXIT 0 ep1 END
5
第4章 汇编语言程序设计
2)完整格式1 (.EXE) 例:显示10行HELLO DATA SEGMENT MESG DB 'HELLO!',0AH,0DH,'$' DATA ENDS STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK BEG: MOV AX,STACK MOV SS,AX MOV SP,100




功能:给符号名定义一个值,或别的符号名。 格式:符号名 EQU 表达式 例: PORT1 EQU 100 PORT2 EQU PORT1 + 10 COUNT EQU CX AD EQU ADD 特点:不能重复定义。不分配存储单元。
24
第4章 汇编语言程序设计
3)定义存储单元伪指令

相关文档
最新文档