《第5.15.5章8086汇编语言》由会员分享,可在线阅读,更多相关《第5.15.5章8086汇编语言(22页珍藏版)》请在金锄头文库上搜索。
1、第5.1-5.5章8086汇编语言汇编语言语句伪指令宏指令DOS系统功能调用汇编语言程序上机过程5-15-1汇编语言语句汇编语言语句一、语句的种类和格式1、三种基本语句(1)指令语句:汇编时产生机器码,对应机器的一种操作。 如: MOV BX,0(2)伪指令语句:又称指示性语句,汇编时不产生机器码, 主要为汇编程序服务。 如: PPP1 DB 0(3)宏指令语句:将频繁出现的程序段定义为“宏指令”,简 化源程序的书写。2、语句格式: 符号地址符号地址 操作操作 操作数操作数 ;注释;注释 变量变量 指令指令 寄存器寄存器 说明程序或语句说明程序或语句 标号标号 伪指令伪指令 标号标号 的功能的
2、功能 宏指令宏指令 变量变量 常数常数 表达式表达式指令语句:标号: 操作码 操作数1,操作数2 ;注解指示语句:标号 伪指令 操作数1,操作数2 ;注解说明:1、标号(1)第一字符必须是字母(2)小于31个字符(3)不能使用8086的保留字。(如:ADD)2、操作码-规定了指令操作的性质(功能)133条。 伪指令-供汇编过程的20种伪操作。3、操作数(1)常数类: 二、八、十、十六进制、科学表示法、字符串等(2)变量(标号):所有的变量和标号都有三种属性段值段值(SEG)偏移量偏移量(OFFSET)类型类型(TYPE):变量(变量(BYTE/WORD/DWORD) 标号(标号(NEAR /
3、FAR)(3)表达式A、算术操作符: , , , B、逻辑操作符:AND, OR, XOR, NOT例:例: OPR1 EQU 25 OPR2 EQU 7 AND AX, OPR1 AND OPR2汇编汇编AND AX, 1C、关系操作符:EQ(相等), NE(不等), LT(小于), GT(大于), LE(小于等于), GE(大于等于) 计算结果为逻辑值:真 0FFFFH 假 0000H例:MOV BX,PORT LE 128若128(真)汇编结果 MOV BX, 0FFFFH若128(假)汇编结果 MOV BX, 0D、属性操作符:类型 PTR 表达式 例: MOV WORD PTR BX
4、, 5段操作符 例: MOV ES: BX, ALSHORT 标号 例: JMP SHORT NEXTE、分析操作符: OFFSET / SEG 变量(或标号) 功能:回送变量或标号的偏移量地址 / 段址 例:MOV BX, OFFSET X ;将标号的偏移量地址X送BX MOV BX, SEG X ;将标号的段地址X送BX TYPE 变量(或标号) 变量:DB DW DD DQ DT 标号:NEAR FARLENGTH 变量 功能:回送由DUP定义的变量的单元数,其它情况回送1SIZE 变量 功能:LENGTHTYPE5-2 伪指令 一、赋值伪操作EQU格式:表达式名 EQU 表达式 CON
5、STANT EQU 256 ALPHA EQU 7 BETA EQU ALPHA二、定义存储器分配伪操作 DB DW DD DQ DT( 1; 2; 4;8;10) DATA_WORD DW 100, 100HDATA_BYTE DB 100 DUP (?)MESS1 DB ABMESS2 DW AB例: OPER1 DB 1, 2 OPER2 DW 1234H, 5678H MOV AX, WORD PTR OPER1+1 MOV AL, BYTE PTR OPER2 AX=3402H AL=34H0102 3412 78 56OPER1 OPER2高地址低地址三、段定义伪操作格式: 段名
6、SEGMENT 定位类型, 组合类型, 类别 段名 ENDS例:定义用户堆栈例:定义用户堆栈 stack segment qqq dw 40H dup (?) stack ends code segment mov ax, stack mov ss, ax mov sp, offset tos code ends如:data1 segment data1 ends ; 定义数据段定义数据段 data2 segment data2 ends ; 定义附加段定义附加段 code segment assume cs:code, ds:data1, es:data2start: mov ax, dat
7、a1 mov ds, ax mov ax, data2 mov es, ax ; 段地址段地址段寄存器段寄存器 code ends end start四、程序开始和结束伪操作 ORG 常数表达式 ;使下一地址是常数表达式的值 ORG 100HSTART: .END 程序首地址标号五、过程定义 PROCSTART PROC NEAR (FAR) .START ENDPNEAR:产生段内调用FAR:产生段间调用5-3系统功能调用一、概述 用户可在自己的程序中调用DOS提供的87个子程序。包括: (1)一般设备的输入输出 (2)磁盘的输入输出及磁盘文件的管理 (3)其它二、DOS功能的调用方法: (
8、1 1)设置调用参数)设置调用参数 (2 2)MOV AHMOV AH, , 功能号功能号 (3 3)INT 21HINT 21H三、基本I/O功能调用1、DOS键盘功能调用 ( AH=1,6,7,8,A,B,C ) (1)1号调用 ( AH=1)单字符输入 功能:扫描键盘,将键盘输入的字符送AL及CRT,Ctrl-Break 退出。例:get-key: MOV AH, 1 INT 21h cmp al, Y je yes cmp al, N je no jmp get_key yes: no: (2)10号调用 ( AH=0AH)字符串输入 功能:将键盘输入的字符串送存DS:DX指向的输入缓
9、冲区。例:输入字符串 (AH=0ah )定义缓冲区: maxlen db 32 actlen db ? string db 32 dup (?) lea dx, maxlen mov ah, 0ah int 21h20 maxlen actlenHOWAREYOU20200d string0b定义键入字符长度实际键入字符数回车结束2、 DOS显示功能调用 ( AH=2 2,6,9 9 )(1) 2号调用(AH=2 ) 显示单个字符 功能:将DL中的字符送CRT显示(打印)mov ah, 2 mov dl, Aint 21h(2)9号调用(AH=9 ) )显示字符串 功能:将DS:DX指向的以“
10、$”结尾的字符串送CRT显示(打印)如:string db HELLO, 0dh, 0ah, $mov dx, offset stringmov ah, 9int 21h回车换行结束HELLOCRT显示器5-4 汇编语言的上机过程IT屏幕屏幕一、建立源文件 EDIT(全屏幕编辑) 文件名为: XXX.ASM二、利用MASM 汇编源程序 XXX.ASM 目标程序 .OBJ 经汇编后自动生成: 列表文件 .LST (省略) 交叉索引文件 .CRF (省略)三、利用LINK完成程序连接 XXX.OBJ 执行文件 .EXE 经连接后自动生成: 内存分配图文件 .MAP(省略) 库文件 .LIB (省略)四、调试程序 DEBUGDEBUG命令介绍命令介绍1、汇编命令 A2、反汇编命令 U3、显示内存命令 D D4、修改内存单元命令E E5、显示并修改寄存器命令 R R6、执行命令 G7、单步执行命令 T T和P8、其他命令 N(定义名字)、W(写磁盘)、L(从磁盘装入)五、执行程序 XXX.EXE(或XXX)注意注意:仅当该程序能够显示出运行结果,才能采用XXX.EXE直接 运行的方式。 要求通过实验熟练掌握以上5个过程。