目录

8086微处理器外部基本引脚

寻址方式

Debug 命令

传送指令

算术指令

转移指令

有符号

无符号

标志位

DOS功能调用

逻辑运算指令

移位指令


8086微处理器外部基本引脚

        数据线16根:D15 - D0

        地址线20根: 寻址能力1MB

        地址线、数据线分时复用

高八位

低八位

AX

AH

AL

BX

BH

BL

CX

CH

CL

DX

DH

DL

SP

SP

BP

BP

SI 

SI

DI

DI

寻址方式
                                                        e.g.
1. 立即数寻址                 Mov AX,1234
2. 寄存器寻址                 Mov AX,BX
3. 直接寻址                     Mov AX,[1234]
4. 寄存器寻址                 Mov AX,[BX+1000]
Debug 命令
1. d:查看内存单元               
2. e:修改内存单元              
3. r:显示或修改寄存器地址
4. a:汇编机器指令
5. u:反汇编
6. t:单步执行
7. g:连续执行 g=首地址 断点(末)
8. q:退出
传送指令
1. mov oprd1,oprd2         oprd1和oprd2的长度必须一致,即两者同为8位或两者同为16位,                                          否则就会出错
2. push oprd 进栈           oprd为16位(字)操作数,可以是寄存器或存储器操作数
3. pop oprd 出栈             oprd为16位(字)操作数,可以是寄存器或存储器操作数
算术指令
                                                                e.g.
1. ADD                         ADD AX,BX 表示AX=AX+BX
2. ADC                         ADC AX,BX 表示AX=AX+BX+CF(进位标志)
3. INC                          INC BX 表示自加
4. SUB                         SUB AX,BX 表示AX=AX-BX
5. SBB                         SBB AX,BX 表示AX=AX-BX-CF
6. DEC                        DEC BX 表示自减
转移指令
1. 无条件转移 JMP
2. 条件转移
有符号
1. JG >
2. JGE >=
3. JL <
4. JLE <=
5. JZ ==
6. JNZ !=
无符号
                1.JA >
                2.JAE >=
                3.JB <
                4.JBE <=
标志位
1. CF                进位标志 产生进位时CF=1,否则CF=0
2. OF                溢出标志 产生溢出时OF=1,否则OF=0
3. SF                符号标志 运算结果正数时SF=0,负数时SF=1
4. ZF                零标志 运算结果为0,ZF=1,否则ZF=0
5. AF                辅助进位标志 运算过程中看最后四位,不论长度为多少,最后四位向前有进位或者借位,AF=1,否则AF=0
6. PF 奇偶标志位(校验位) 运算结果中有偶数个“1”,PF=1,否则PF=0

DOS功能调用

DOS功能调用至少要有

MOV AH,__ ;横线处填功能调用序号 
INT 21H

这两句

1.4CH 带返回码结束即中断程序的功能

MOV 4CH 
INT 21H

2.02 显示一个字符

;参数始终传递给DL 
;程序作用:显示一个字符‘A’ 
;将字符'A'传送给DL 
MOV DL,41H 
;调用02功能 
MOV AH,2
INT 21H

3.01 带回显的键盘输入

;程序作用:输入一个字符并显示出来 
MOV AH,1 
INT 21H

4.07 不带回显的键盘输入

;程序作用:输入一个字符但不显示 
MOV AH,7 
INT 21H

5.09 字符串输出

;字符串st1定义在DATAS数据段里面 
DATAS SETMENT 
st1 db 'Please input a string:' 
DATAS ENDS 
;在代码段输入 
mov dx,offset st1 
mov ah,9 
int 21h

逻辑运算指令

  1. AND          与
  2. OR            或
  3. NOT          非
  4. XOR          异或 对个别位置取反用异或,要取反的位置取1,不取反的位置取0
  5. TEST         测试 相当于做AND运算,但结果不回溯,只影响标志位需要测试的位置取1,不需要测试的位置取0

移位指令

  1. shl 逻辑左移,低位补0 当移出的数是1时,会出现溢出
  2. shr 逻辑右移,高位补0 相当于无符号数除二运算
  3. sal 算术左移,低位补0
  4. sar 算术右移,高位补符号位 相当于带符号数除2运算
  5. rol 循环左移    e.g.   1011 0100 --> 0110 1001 --> 1101 0010 --> 1010 0101····
  6. ror 循环右移
  7. rcl 带进位的循环左移,''c''表示‘’CF‘’   e.g.    CF=1   0000 0001 -->0000 0001 1 --> 0000 00110 --> 0000 01100···    
  8. rcr 带进位的循环右移