第一章 8088汇编语言程序由下列四个部分组成:
1,代码段
2,数据段
3,标号
4,注释
(代码段)每条汇编语言指令由两个基本部分组成:
操作符(operation)和操作数(operands)
操作符 操作数
mov ax,3
尽管所有的汇编语言指令都需要操作符,但不一定需要操作数。
(数据段)汇编伪指令(assembler directives)
(标号) 由数字,字母和字符?,。,·,$组成。
名称不能以数字打头
点号只能能作标号的第一个字符。
标号的长度不限,但只有前31个字符有效。
除非标号用于连接汇编伪指令,否则后面必须跟一个分号.
编译 masm first.asm
链接 link first
调试 debug first.exe
反汇编 -u
单步执行 -t
察看内存 -d
第二章 8088体系结构
存储器单元
8088寄存器组
计算机存储器
输入/输出设备
七种基本存储单元类型
位(bits) 1
半字节(nibbles) 4
字节(bytes) 8
字(words) 16
双字(doublewords) 32
四字(quadwords) 64
十字(tenbytes) 80
寄存器组
专用存储单元叫做寄存器
AX,BX,CX,DX,BP,SI,DI,SP,CS,DS,ES,SS,FLAGS,IP
第三章 数据表示法
二进制数字
十进制数字系统
十六进制数字系统
正数和负数
布尔运算符
二进制编码的十进制
浮点数
字符和字符串
负数表示 :取反+1
浮点数表示 :
1,先把十进制数换位二进制数 。
2,将二进制数移位成如下形式: v=(-1)S*M*2E M(1,2)
3,M去去然后在M后面补0凑齐23位 。将E加上127然后转换成8位 二进制数e。
4,S +e+M(补齐23位 )
第四章 使用数据工作
1,伪指令,常数和运算符
使用汇编语言伪指令可以生成汇编语言程序中的数据值。
伪指令:
DB DW DD DQ DT
EQU =
RADIX
运算符:
+ - * / MOD NOT AND OR XOR SHL SHR EQ NE LT LE GT
GE SEG OFFSET TYPE LENGTH
SEZE HIGH LOW PTR :
位置计数器 $
第五章 8088指令集
数据传送指令
算术指令
数据转换指令
位串和布尔指令
程序控制和重复指令
标志指令
其他指令
数据传送指令
MOV XCHG LDS LES LEA XLAT
算术指令
INC DEC NEG ADD ADC SUB SBB MUL IMUL DIV IDIV
数据转换指令
CBW CWD AAA AAS AAM AAD DAA DAS
布尔指令
NOT AND OR XOR
循环和移位指令
ROL ROR RCL RCR SAL SAR SHL SHR
比较指令
CMP TEST
跳转指令
JMP JA(JNBE) JAE(JNB) JB(JNAE) JBE(JNA) JC JE JG(JNLE)
JGE(JNL) JL(JNGE) JLE(JNG) JNC JNE JNO JNP(JPO) JNS JNZ JO JP(JPE) JS JCXZ
重复指令
LOOP LOOPE(LOOPZ ) LOOPNE(LOOPNZ)
其他指令
CLC CLD CLI CMC LAHF NOP SAHF STC STD STI
第六章 寻址方式
四种寻址方式 1,立即寻址方式,寄存器寻址方式,直接寻址方式和间接寻址方式。
使用这四种寻址方式
间接存储器寻址方式
四种基本类型:
。寄存器间接寻址方式
。基址或变址寻址方式
。基址变址寻址方式
。带位移的基址变址寻址方式
第七章 结构化程序设计
顺序
选择
重复
第八章 字符串
传送字符串
装入字符串
存储字符串
比较字符串
扫描字符串
传送字符串
MOVS(传送字符串)
MOVSB(传送字节串)
MOVSW(传送字串)
装入字符串
LODS(装入字符串)
LODB(装入字节串)
LODSW(装入字串)
存储字符串
STOS(存储字符串)
STOSB(存储字节串)
STOSW(存储字串)
比较字符串
CMPS(比较字符串)
CMPSB(比较字节串)
CMPSW(比较字串)
扫描字符串
SCAS(扫描字符串)
SCASB(扫描字节串)
SCASW(扫描字串)
第九章 结构和记录
结构
记录
结构
name struc
field declaration
...
field declaration
name ends
结构变量
name strucname initial value,initial value
引用结构字段
variable, field
记录
name record field,field
例: colorcode record blink:1, back:3, intensity:1, fore:3
记录变量
name recordname <initial value, initial value,etc>
MASK (屏蔽)运算返回特定记录字段的位屏蔽值。
WIDTH (宽度)运算返回字段或记录的位数。
第十章 堆栈
程序在存储器中的分布:
高端存储器
堆栈
空闲存储器
数据区
代码段
低端存储器
读写堆栈
push operand
pop operand
operand是AX,BX,CX,DX,SP,BP,SI,DI,ES,CS,SS,DS,或Mem16。
标志和堆栈
pushf
popf
第十一章 过程
使用PROC和ENDP可以在汇编语言中创建过程。
name proc type
instruction
..
..
instruction
name endp
name 是过程的名字
type NEAR或FAR。若此项忽略,则为NEAR。若过程是远调用,就必须标明过程为FAR。
instruction 是一个汇编语言代码语句
连接
call operand
operand 是一个标号,Reg16,或Mem16。
返回
RET
参数传递的三种方法
一:通过寄存器
二:通过堆栈
三:通过指向寄存器或堆栈中实际参数的指针
第十二章 端口
IN
OUT
INS 从端口输入字符串
INSB 从端口输入字节串
INSW 从端口输入字串
OUTS 向端口输出字符串
OUTSB 向端口输出字节串
OUTSW 向端口输出字符串
第十三章 中断
INT
INTO
中断处理程序
CLI
STI
第十四章 条件汇编
IF ENDIF
IF ELSE ENDIF
IFDEF ENDIF
IFNDEF ENDIF
第十五章 等价与宏
不可重复定义的数值等价
可重复定义的数值等价
字符串等价
宏
局部标号
重复块
推出宏
宏操作
不可重复定义的数值等价
EQU
可重复定义的数值等价
=
字符串等价
EQU (处理字符串时可重复定义)
宏
定义
name MACRO parameter,parameter,etc
statements
....
....
statements
endm
使用
name argument,argument,etc
局部标号
定义
local name,name,name
重复块
REPT expression
statement
..
statement
endm
IRP parameter,<argument>
statement
..
statement
endm
IRPC parameter,argument
statement
..
statement
endm
推出宏
EXITM
宏操作
& 替代 <>字符串 !转义 %计算值
宏注释 ;;
第十六章 汇编语言和C/C++的接口
函数和变量名
参数传递
返回调用程序
局部变量空间