汇编语言概念总结

时间:2024.5.4

1.指令对标志位的影响

MOV指令不影响标志位 PUSH和POP指令均不影响标志位 输入输出指令(IN,OUT),换码指令(XLAT)不影响标志位

LEA(目的操作数使用寄存器,不能使用段寄存器,源操作数不能用立即数和寄存器)

不影响标志位

CBW,CWD不影响标志位

加法减法指令,除INC和DEC不影响CF标志外,他们都影响条件标志位

NEG指令的条件码按结果设置,操作数为0时CF=0,其余均为1。当字节运算时对-128

求补,以及字运算时对-32768求补,OF=1,其余均为0

乘法指令,对除CF,OF以外的条件码无定义,MUL如果乘积的高一半为0,则CF和OF

均为0,否则均为1。IMUL如果乘积的高一半是低一半的符号扩展,CF和OF均为

0,否则均为1

除法指令对所有条件码均无定义

NOT不影响标志位,AND,OR,XOR,TEST使CF和OF为0,AF无定义,SF,ZF,PF根据结果

位测试指令影响CF,其他标志位无定义

移位指令,OF当CNT=1时才是有效的,否则无定义(最高有效位值变化,OF=1,否则

OF=0),循环移位不影响除CF,OF以外的其他标志位,移位指令根据结果设置SF、

ZF、PF,AF无定义

2.减法OF的设置:若两个数的符号相反,而结果的符号与减数相同,则OF=1;除上述情

况外OF=0

3.寻址方式

立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,

基址变址寻址,相对基址变址寻址,比例变址寻址,基址比例变址寻址

相对基址比例变址寻址

4.指令系统分成六大类,数据传送指令、算术指令、逻辑指令、串指令、控制指令和处理

机和杂项指令。

5.指令RET 完成调用过程的返回,每个过程有far或Near 属性;指令IRET 完成中断处理程 序的返回。

6.在文本显示模式下,屏幕上的每个字符在存储器中有2个字节的空间与之对应

7.执行指令CALL SUBB时,所要保护的断点在(sp) 中,而执行指令CALL FAR PTR SUBB时,所要保护的断点在(((sp)+2),(sp))中

8.段内直接近转移:JMP NEAR PTR OPR或JMP OPR IP?(IP)+16位位移量,转移到任何位置,

相对寻址

段内直接短转移:JMP SHORT OPR IP?(IP)+8位位移量,-128~+127之间转移,相对寻址

段内间接近转移:JMP WORD PTR OPR ,(IP)?(EA),OPR使用除立即数以外的任一寻址方式

段间直接远转移:JMP FAR PTR OPR(IP)?OPR的段内偏移地址,(CS)?OPR所在段的段地址

直接寻址

段间间接远转移:JMP DWORD PTR OPR,(IP)?(EA),(CS)?(EA+2),OPR使用除立即数及存储器方

式以外的任何存储器寻址方式

9.条件转移指令:目标地址应在本条指令下一条指令地址的-128~+127个字节的范围之内

10.将AX寄存器及CF标志位同时清零AND AX,0或XOR AX,AX

11. IN AL , [80H]×在IN指令中端口直接表示时,不加[]

MOV IP , 2000H×IP寄存器不能直接赋值,不能使用MOV指令

PUSH CS√POP CS×POP指令不能使用CS寄存器,不能向CS寄存器中赋值

POP CS×POP指令不能使用CS寄存器,不能向CS寄存器中赋值

POP指令不允许使用立即数寻址方式

12.段不能任意地址,必须从任一小段的首地址开始,从0开始,每16个字节为一小段

13.在debug中显示寄存器内容的命令为R,修改内存单元数据的命令为E,单步执行的命令

为T

14.I/O指令是CPU与外部设备进行通信的最基本途径,即使使用DOS功能调用或BIOS例行程

序,其例行本身也是用IN和OUT指令与外部设备进行数据交换的。

15.中断20H到3FH用于调用DOS功能例行程序,其他中断号小于20H或大于3FH的中断用于

调用BIOS或一些应用软件。

16.外设发出中断请求到CPU响应中断,控制条件:外设的中断请求是否屏蔽(IMR),CPU

是否允许响应中断(IF)

IF=0,CPU禁止相应任何外设的中断,IF=1,允许CPU响应外设的中断请求

CPU不能禁止非屏蔽中断,非屏蔽中断主要用于一些紧急的意外情况处理

在中断处理完成后,必须把中断结束位置为1

17.DOS功能与BIOS功能都通过软件中断调用,把功能号装入AH,子功能号装入AL。

18.PC机系列的键盘触点电路按16行*8列的矩阵来排列,按键的识别采用行列扫描法。 低7位是键的扫描码,最高位为0或1,分别表示键是“按下”状态还是“放开”状态。

键盘上每个键都对应一个扫描码

19.显示器可简单地分为单色显示器和彩色显示器。微机系统广泛使用的是光栅扫描显示器。

显示适配器也称为显示卡,是计算机和显示器的接口。

20.一副屏幕上有20个字符(25*80),对应显示屏幕上的每个字符,在存储器中又连续的

两个字节表示,一个字节保存ASCII码,另一个字节保存字符的属性。显存容量需要4KB。 对单色显示,字符的属性定义了字符的显示特性。


第二篇:汇编语言及接口技术总结


一、

1.补码

正数补码:正数补码是自己

复数补码:写出其绝对值正数补码、各位取反、末位加1

二、

1.硬件:中央处理器、内存储器、输入输出设备、系统总线(数据线、地址线、控制线三组)

2.CPU:执行单元EU+总线接口单元BIU组成。EU由算术逻辑单元ALU、控制部件及一些寄存器组成。BIU给EU递交指令和数据。

**3.80X86寄存器组

通用寄存器:

数据寄存器 AX :累加器,算术运算主要寄存器。

I/O指令也用这寄存器与外设传送信息。

BX :计算存储器地址时经常作基址寄存器 。

CX :移位、循环和串处理指令中用来保存计数值。

DX :双字运算时把DX与AX组合存放一个双字,DX存高位

字。某些I/O操作时DX可以存放I/O端口地址。

指针寄存器 SP :堆栈指针寄存器,存放当前堆栈段栈顶的偏移量,

它们总与SS堆栈段寄存器配合存取堆栈段中的数据。

BP :基址指针寄存器,可以用SS连用来确定堆栈段中某

一存储单元的地址。并且可用作堆栈区中的一个基

地址以便访问堆栈段中信息。

变址寄存器 SI :源变址寄存器SI和目的变址寄存器DI一般与数据段

寄存器DS连用,来确定数据段中某一存储单元的地

址,这两个寄存器有自增和自减的功能。

DI :

PS:SP不能随意改动,需要慎用。80286只有4个指针和变址寄存器以

及BX可以存放偏移地址,80386所有32为通用寄存器都可以存放地址。

控制寄存器:

IP :指令指针寄存器,总是与CS段寄存器配合指出下一

条要执行指令的地址,存放偏移量部分。

FLAGS :标志寄存器,也称为状态寄存器。有如下标志:

CF:进位标志,存放进位或借位,也可以测溢出,溢出

时CF=1

PF:奇偶标志,记录运算结果低8位含1个数为奇数还是

偶数,可用于检测数据传送过程中是否发生错误。

偶数为1,奇数为0

AF:辅助进位标志,记录运算结果低4位向前产生的进

位或借位,有则为1。

ZF:零标志,记录结果是否为0,为0则置1,否则清。

SF:符号标志,记录结果符号,负则为1,否则清零

OF:溢出标志,记录结果是否溢出,可以检测带符号

数运算时是否溢出,溢出时OF=1

DF:方向标志,服务于字符串操作指令,DF为1时,

每次操作后SI和DI减小,DF为0时SI和DI增大。

TF:陷阱标志,用于程序调试。当TF=1时CPU处于单步

方式,TF=0时CPU处于连续方式。

IOPL:特权标志,占D13和D12两位,保护模式下用于

控制对I/O地址空间的访问,只对80286以上CPU有效

ID:标识标志,ID=1则表示PENTIUM支持CPUID,只对

PENTIUM以上有效。

段寄存器:

代码段寄存器 CS:指定当前代码段,代码段中存放当前正

在运行的程序段。

堆栈段寄存器 SS:指定当前堆栈段。

数据段寄存器 DS:指定当前运行程序所使用的数据段。

附加段寄存器 ES:指定当前运行程序所使用的附加数据段。

4.段式管理:CPU存储器采用分段管理方法。一个内存单元地址=段基址:偏移量

实模式下的1MB存储器里,20位物理地址有前16位段地址和后16位偏移地址组成,段地址只取段起始地址的高16位值。

*物理地址=16d*段地址+偏移地址

三、

1.寻址

A)数据有关寻址方式(8种)

立即寻址方式

MOV AL,6 只能用在源随机数

寄存器寻址方式:操作数包含在寄存器中

MOV BX,AX

以下操作数都不直接放寄存器中

有效地址EA=基址+(变址*比例因子)+位移量

直接寻址方式:操作数有效地址直接包含在指令中

MOV VAR,AX

MOV AX,[78H] 必须和DS组合求出物理地址

段跨越前缀:MOV AX,ES:[78H]

符号表示地址:MOV AX,VAR = MOV AX,[VAR]

双操作数指令两个操作只能有一个使用存储器寻址方式。

寄存器间接寻址方式:地址只能在BX,BP,SI,DI中。

操作数在存储器中,不能在AX等寄存器中。

MOV AL,[BX]

寄存器相对寻址方式:也称直接变址寻址方式,操作数有效

地址是BX、BP或SI、DI寄存器的内容和

指令中给定的一个位移量之和。

MOV AL,BUF[BX]

MOV AL,8[BX] = MOV AL,[BX+8]

基址变址寻址方式:操作数有效地址必须是一个BX、BP和一个 SI、DI的内容之和。

MOV AL,[BX][SI] = MOV AL,[BX+SI] 访问一位数组

相对基址变址寻址方式:基址+变址+给定位移量

MOV AL,MASK[BX][SI] = MOV AL,MASK[BX+SI]

= MOV AL,[MASK+BX+SI] 访问二维数组

比例变址寻址方式

EA=(基址)+(变址)*比例因子+disp

B)地址有关寻址方式(4种)

段内直接寻址方式

EA=(IP)+DISP

段内间接寻址方式

JMP BX

JMP WORD PTR [BX]

JMP TABLE[BX]

JMP [BX][SI]

段内转移只改变IP

段间直接寻址方式

JMP FAR PTR LAB :偏移量送IP 段基址送CS

段间间接寻址方式

JMP DWORD PTR [BX]

段间转移 IP和CS都改变

2.汇编指令

A)数据传送指令

MOV DST(目标),SRC(源)

注意:1.源和目标寄存器数据类型必须一样(占用字节数)

2.立即数不能做DST,立即数不能直接送段寄存器。

3.DST不能是CS。

4.2个存储单元、段寄存器不能直接传送。

MOV AX,SEG TAB ;把TAB段基址给AX

MOV DI,OFFSET TAB ;把TAB偏移量给DI

PUSH SRC (SP=SP-2)

POP DST (SP=SP+2)

PUSHA ;把8个16位通用寄存器入栈 (SP=SP-16)

(顺序AX CX DX BX SP BP SI DI)

POPA ;把8个16位通用寄存器入栈 (SP=SP+16)

(顺序DI SI BP SP BX DX CX AX)

XCHG AX,BX 交换AX,BX值

PS:不能同时为存储器操作数

B)输入输出指令

IN ACR,PORT ;把外设端口PORT内容传送给累加器ACR

(例:IN AL,61H ;把61H端口内容输入到AL中)

OUT PORT,ACR ;把累加器的内容传送到外设端口

(例:OUT 20H,AX ;把AX内容输出到20H端口)

所有I/O端口与CPU之间的通信都由IN和OUT指令完成。

C)查表指令

XLAT :通过AL寄存器中索引值在表中查得表项内容

并将之返回到AL中。

D)地址传送指令

LEA REG,SRC ;把源操作数的有效地址送给指定的寄存器

PS:源操作数必须是存储器操作数

(例:LEA BX,TAB = MOV BX,OFFSET TAB MOV比

LEA快但是OFFSET只能与简单的符号地址相连

例如:LEA BX , [BX+SI+0F62H] )

LDS REG,SRC ;加载数据段指针指令,把源操作数的FAR型 指针拷贝到DS和指令中指定的通用寄存器。 若REG是32位,则源操作数必须是48位,其中 低32位送寄存器,高16位送DS

(例:LDS SI,ADDR ; (DS:addr)=78563412H

则执行结果是(DS)=7856H,(SI)=3412H )

LES REG,SRC ;加载附加数据段指针指令,REG不可用段寄存器。

E)标志传送指令

PUSHF/PUSHFD ;标志进栈指令,把FLAGS压入栈,SP=SP-2 POPF/POPFD ;标志出栈指令,把FLAGS推出栈,SP=SP+2 LAHF ;标志送AH指令,把FLAGS低八位送AH

SAHF ;AH送标志寄存器指令SAHF,把AH传给FLAGS低八位

F)二进制算术运算指令

CBW 字节扩展成字指令;把AL寄存器中符号位值扩展到AH中, (例:MOV AL,5 CBW 执行后(AH)=0,AL不变)

CWD 字扩展成双字指令;把AX寄存器中符号位值扩展到DX中, (例:MOV AX,5 CWD 执行后(DX)=0,AX不变)

CDQ 双字扩展为四字;把EAX寄存器符号位值扩展到EDX中 CWDE AX符号位扩展到EAX指令,AX寄存器中符号位扩展到 EAX的高16位。

G)二进制加法指令

ADD DST,SRC ;DST=DST+SRC 不带进位

ADC DST,SRC ;DST=DST+SRC+CF 带进位 CF

INC DST ;DST=DST+1S

XADD DST,SRC ;TEMP=DST+SRC,SRC=DST,DST=TEMP

H)二进制减法指令

SUB DST,SRC ;DST=DST-SRC 不带借位

SBB DST,SRC ;DST=DST-SRC-CF 带借位 CF

DEC DST ;DST=DST-1

CMP DST,SRC ;改变标志位

NEG DST ;求补指令,对目标操作数求反加一,实现DST=0-DST 该指令可以求一个数的相反数或者负数绝对值

I)二进制乘法指令

MUL SRC ;无符号乘法,实现AX=AL*SRC, (DX,AX)=AX*SRC 源操作数不能是立即数,若乘机高半部分为0则 对CF和OF清0,否则置CF和OF为1。

IMUL SRC ;带符号数乘法。

例(80286)

IMUL AX,BX; AX=AX*BX;

IMUL AX,5;AX=AX*5;

IMUL AX,BX,5 ;AX=BX*5;

J)二进制除法指令

**DIV SRC; 无符号除法。

例:AX / SRC8 商在AL,余数在AH

DX:AX / SRC16 商在AX,余数在DX

EDX:EAX / SRC32 商在EAX,余数在EDX

IDIV SRC ;有符号除法,余数符号与被除数相同

K)十进制调整指令

加法的十进制调整指令DAA

减法的十进制调整指令DAS

加法的ASCII调整指令AAA

减法的ASCII调整指令AAS

乘法的ASCII调整指令AAM

除法的ASCII调整指令AAD

L)逻辑指令

NOT DST ;逻辑非

AND DST,SRC ;逻辑与

TEST OPR1,OPR2 ;测试

OR DST,SRC ;逻辑或

XOR DST,SRC ;逻辑异或

M)移位指令

SHL DST,CNT ;DST左移CNT位,右侧补0,逻辑左移 SAL DST,CNT ;DST左移CNT位,右侧补0,算术左移

SHR DST,CNT ;DST右移CNT位,左侧补0,逻辑右移

SAR DST,CNT ;DST右移CNT位,左侧补最左端数字,算术右移

左移乘以2,右移除以2,比乘除法快的多

CHT>1时由CL给出

N)循环移位指令

不带进位ROL DST,CNT ;DST最左位添加到最右边,左移一位,

ROR DST,CNT ;DST最右位添加到最左边,右移一位,

带进位 RCL DST,CNT ;CF移入DST最右边,左移一位,最左边放入CF

RCR DST,CNT ;CF移入DST最左边,右移一位,最右边放入CF

O)转移指令

JMP DST ;DST为转移的目标地址(或称转向地址)

JMP SHORT LABEL ;段内直接短转移。

无条件转移到label处,距离与IP值差在-128-127中

JMP LABEL/JMP NEAR PTR LABEL ;段内直接近转移

无条件转到label处,差在-32KB-32KB之间

JMP REG :段内间接转移

例:LEA BX,B2; JMP BX

JMP FAR PTR LABEL ;段间直接转移,在不同段中跳转

JMP DWORD PTR M ;段间间接转移,转向地址只能放在

内存的双字变量中。

P)循环指令

LOOP LABEL ;CX=CX-1,若CX!=0则跳转LABEL

LOOPE/LOOPZ LABEL ;CX=CX-1,若CX!=0或ZF=1则跳转LABEL

相等循环,比较两个字符串

LOOPNE/LOOPNZ LABEL ;CX=CX-1,若CX!=0或ZF=0则跳转LABEL 不等循环,在数据块中查找信息

Q)子程序

CALL DST

RET

3.中断调用与返回指令

中断——内部中断,外部中断。

内部中断(除以0时所产生的中断, 为了做某些处理而设置的中断指令)

外部中断(I/O设备与CPU之间的通信)

中断向量:中断处理子程序的入口地址。

内中断调用指令INT。INT n ;将FLAGS,CS,IP依次压入栈。

从中断向量表4n处取出N类中断向量

中断返回指令IRET。IRET ;放在中断处理子程序末尾,

将IP,CS,FLAGS依次推出栈

4.处理机控制指令

标志操作指令

CLC ;CF=0

STC ;CF=1

CMC ;CF取反

CLD ;DF=0

STD ;DF=1

CLI ;IF=0

STI ;IF=1

5.串操作指令

REP 重复前缀,用在传送类串之前

REPE/REPZ 相等重复前缀,用在比较类串操作,当比较相等且 执行后面的串指令

REPNE/REPNZ 不等重复前缀,比较不等且重复次数未到时执行 串传送MOVS DST,SRC ;要建立方向标志DF,且存入数据长度CX 地址指针增加时DF=0,减少时DF=1

默认MOVSW;字,从DS:SI到ES:DI

这些寄存器都需要提前初始化好

MOVSB 字节 MOVSD 双字

取串LODS SRC ;

存串STOS DST ;

串输入INS DST,DX ; DX存端口号

串输出OUTS DX,SRC ;DX存端口号

串比较CMPS DST,SRC ;

串扫描SCAS DST ;

四、

1.汇编语言语句

组成:指令、伪指令、宏指令

定义段: 段名 SEGMENT...... 段名 ENDS

定义过程:过程名 PROC......过程名 ENDP

2.常用伪指令

数据定义伪指令

[temp] DB 5 ;DB为字节,DW为字,DD为双字

十进制以D结尾,2进制以B结尾,16进制以H 结尾,若第一位是字母,则必须在前面加上0如0AH

符号定义伪指令

等值EQU伪指令: CR EQU 0DH;回车符等值

***获取长度 COUNT EQU $-STR; COUNT存串长度(获取 等号伪指令:K=K+1; 重复次数未到时的字节数!)

3.结构伪指令

结构定义:结构名 STRUC

......

结构名 ENDS ;

**PS:结构定义放在数据段定义之前

简单字段:一个?、数字、字符、字符串

多重字段:有DUP或者数组多个数据项

结构预置: 结构变量名 结构名 <字段表>

PS:多重字段不能赋初值,只能用,隔开

例:NO1 PAYROLL 30 DUP(<>);

NO2 PAYROLL<,'ABCd',5>

**PS:结构预置放在数据段中

访问结构:

A) LEA BX,NO1

B) MOV NO1.WAGES,100

C) MOV [BX].WAGES,100

D) MOV [BX].NAM[SI],'C'

**PS:结构访问放在代码段中

4.汇编语言操作符

属性操作符 MOV BX, WORD PTR BUF

(PS:类似强制转换,只能出现在操作数)

CC EQU 0ABCDH;MOV AH,HIGH CC;(取高字节,LOW同理)

5.数据的输入输出

键盘中断调用16H

AH=? ;INT 16H;

MOV AH,0;INT 16H;MOV CHAR,AL 从键盘获取一个字符 显示器中断调用10H

显示模式:

AL=显示模式

MOV AH,0;MOV AL,3;INT 10H

清屏:

MOV AH,6; MOV AL,0; 上卷行数

MOV BH,1FH; 空白区属性 MOV CX,0; 窗口左上角 MOV DH,24; 窗口左上角 MOV DL,4FH ;窗口右下角 INT 10H;

设置光标:

MOV AH,2; MOV BH,0;页号

MOV DH,10;行号 MOV DL,20;列号 INT 10H;

读光标:

MOV AH,3; MOV BH,0;页号 INT 10H;

读取后CH=光标开始行,CL=光标结束行

DH=光标所在行, DL=光标所在列

设置光标位置属性和字符:

MOV AH,9; MOV AL,'*'; 字符asc码 MOV BH,0;页号 MOV BL,0EH;字符属性颜色 MOV CX,1; 字符重复次数 INT 10H

以TTY电传打印机方式显示字符:

MOV AH,OEH; MOV AL,'*'; MOV BH,0;页号 INT 10H;

DOS功能中断调用21H

输入字符:MOV AH,1; INT 21H; 输入的字符在AL中 输出字符:MOV AH,2; MOV DL,'A'; INT 21H

输入字符串:定义缓存区 BUF DB 60;定义缓存区长度 DB ? ;预留输入字符个数

DB 60 DUP(?); 定义缓存区

MOV AH,0AH; LEA DX,BUF;传送地址 INT 21H; 输出字符串:STRA DB '!@@','$';输出以$结尾字符串 MOV AH,9; LEA DX,STRA; INT 21H;

五、

1.跳转表

定义: JMP_TAB DW E1

DW E2

DW E3

使用: A)JMP JMP_TAB[SI];

B)LEA BX,JMP_TAB;

JMP WORD PTR [BX][SI];

C)LEA BX,JMP_TAB;

ADD BX,DELTA;

JMP WORD PTR[BX];

2.延时

DELAY:MOV CX,2801;

WT :LOOP WT; 这段程序可以延时10ms

六、

1.子程序定义:

SUB1 PROC 属型(NEAR或FAR)

……

RET

SUB1 ENDP

调用:CALL SUB1

2.子程序传参

通过寄存器

通过变量

通过地址表

通过堆栈(用RET n指令调整SP指针来删除堆栈中多余的参数, 如果是16位寄存器压入,则要N=2*N(参数个数))

七、

1宏定义:

宏指令名 MACRO[形参]

……

ENDM

调用:宏指令名[实参]

2.LOCAL伪指令:宏中用变量名则必须写,每次扩展宏都改变变量名, 保证汇编中生成名字的唯一性。

3.PURGE伪指令:内存中删掉指定宏指令

PURGE INCHAR;

(宏指令如果和关键字重名,宏指令优先度高)

3.宏操作符

&把前面和后面的变量名组合成一个指令助记符

<>把尖括号中的参数变为一个整体的多重字段来扩展宏指令 !把后面的一个字符看做普通字符对待,类似于\转义 %强迫后面表达式立即求值再做实参传入宏指令

;;宏指令中两个;表示宏扩展时不出现注释,

只出现一个;则在扩展时出现注释

3.宏与子程序区别

宏指令每次扩展都要占用存储空间

子程序只占用一份空间,但是多了CALL和RET的时间开销 宏传参方便,灵活多样

4.重复伪指令

REPT 数值表达式

……;重复块

ENDM

例: X=5;

REPT 6;

DW X*X*X;

X=X+1;

ENDM;

5.不定重复伪指令

IRP 形参,<实参> ;重复次数由实参个数而定

……;重复块

ENDM ;程序依次从实参里调参数来形参

例: IRP REG,<AX,BX,CX,DX>

PUSH REG

ENDM

IRPC 形参,字符串

…… ;重复块

ENDM ;重复次数又字符决定,每次用下个字符替代形参 例: IRPC Z,1235

DB Z

ENDM

;全部压入栈程序:

IRPC K,ABCD

PUSH K&X

ENDM

6.条件伪指令

IF XX

[ELSE]

ENDIF

退出当前层宏指令:EXITM

八、

1.CPU与外设信息交换方式:程序查询方式、中断传送方式、DMA方式 (直接存储器方式)、通道方式、I/O处理机管理方式。

程序查询方式:I/O指令在端口级上进行信息输入输出,CPU测试外设 接口状态,若外设没准备好,则继续循环测试,直到 设备准备好,CPU执行一次传送。

优点:实现简单。

缺点:大量时间花费在查询外部设备就绪上系统效率低 **适用于I/O设备少且数据传输率较低的场合。

中断传送方式:计算机暂时挂机正在执行的进程而转去处理某时间。 内中断:CPU状态改变或执行中断指令造成。

INT n指令;除法错中断;断点中断;

溢出中断;(OF=1时INTO)单步中断

外中断:来自处理机外部条件,以完全随机方式中断。 可屏蔽中断(8259a可编程中断控制器)

中断屏蔽寄存器IMR:控制外设中断是否屏蔽

MOV AL,11111101B

OUT 21H,AL

IN AL,21H

AND AL,11111101B

OUT 21H,AL

标志寄存器的中断允许位IF:控制CPU是否允许响应中断

STI:开中断 CLI:关中断

中断结束命令:MOV AL,20H

OUT 20H,AL

3.中断向量:

设置中断向量:AH=25H,AL=中断类型号,DS:DX=中断向量 取中断向量:AH=35H,AL=中断类型号,ES:BX=中断向量 优先级:内中断》不可屏蔽中断》可屏蔽中断》单步中断

4.中断处理子程序:备份寄存器、STI开中断、处理中断、CLI关中断、 发送中断结束命令EOI给8259A、恢复寄存器、IRET

主程序:保存中断向量、设置新中断向量、清零8259A中断屏蔽 寄存器响应位、开中断、主程序结束之前恢复原中断向量

*5.8259A工作方式:

中断请求寄存器IRR(用来请求中断)

中断屏蔽寄存器IMR(存放屏蔽位信息)

中断服务寄存器ISR(存正在服务的中断)

优先权判决电路

控制逻辑(设置管理8259A工作方式)

**有8级优先权,通过级联可以扩展到64级优先权

优先管理方式:

A)全嵌套方式:默认优先权设置方式,IRO优先级最高,IR7最低

B)特殊全嵌套方式:与A)基本相同,不同的是当CPU处理某一级 中断时,如果有同级请求,则CPU会做出响应,从而形成 了对同一级中断的特殊嵌套。

C)优先级自动循环方式:一个中断源的中断请求被响应之后,其 优先级自动降为最低。系统启动时,8级中断优先级默认 为IR0-IR7,IR4发送中断请求后优先级变为IR5-IR7, IR0-IR4

D)优先级特殊循环方式:与C)不同的是初始化优先级不是IR0-IR7 而是由程序控制的。

中断源屏蔽方式:

A)普通屏蔽方式:8259A每个中断请求输入,受屏蔽寄存器相应位 的控制,若为1则请求不能送CPU

B)特殊屏蔽方式:用OCW1对屏蔽寄存器中某一位置位时同时使 当前中断服务寄存器ISR中相应位复位,这样就不只屏蔽 正在处理的中断等级而真正开放其他优先级较低的中断 中断结束方式:

A)中断自动结束方式AEOI:系统一旦响应中断,那么CPU再发第二 请求

个INTA脉冲时就会使中断服务寄存器ISR中相应位复位。

B)普通中断结束方式:当CPU用输出指令向8259A发中断结束命令 OCW2时,8259A才会使中断服务寄存器ISR中优先级别高 的位复位,表示处理中断结束。

C)特殊中断结束方式:在CPU结束中断之后向8259A发送一个特殊 的EOI中断结束命令,指明ISR中需要复位的位

PS:级联系统中,不用自动中断,对于另外2个方式,对于从片在一个 中断服务结束程序时,都必须发送2次中断结束命令,一次对主片, 一次对从片。

连接系统总线方式:

A)非缓存方式:SP/EN作为输入,来确定8259A是主控制器还是从 控制器。

B)缓存方式:SP/EN为输出,用来启动总线驱动器。

中断触发方式:

A)边沿触发方式:申请端出现低电平到高电平的跳变说明有 中断请求信号。

B)电平触发方式:申请端出现高电平表示有中断请求信号。

8259A只有一条地址线,2个端口地址20H和21H,7个命令字 以端口地址区分,

命令字中某些位作特征码来区分,

以命令字写入顺序来区分

初始化控制字 ICW1-ICW4,命令寄存器OCW1-OCW3

ICW1(初始化字) ICW2(中断向量字) ICW3(级联控制字) ICW4(控制初始化命令字)

OCW1(中断屏蔽字)

OCW2(中断结束和优先循环控制字)

OCW3(屏蔽和读状态控制字)

九、

十、

十一、

1.8255A结构

读写控制逻辑:控制A组B组发出控制信号

A组控制逻辑:控制A端口及C端口的高4位

B组控制逻辑:控制B端口级C端口的低4位

A端口工作无限制,B端口只能工作与方式1和方式2,C端口被 分为2个4位端口,除了一般输入输出端口,还可以为A端口和 B端口提供联络信号。

方式0:基本输入输出方式,ABC都可以作用于方式0

用于无条件传输或者查询方式的数据传输。

输出锁存,输入不锁存。

方式1:选通的输入输出方式

单方向输入输出方式,A\B可以工作在方式1,

端口C用来配合作选通信号,若AB都在方式1,则需要

C端口六位做选通信号,剩下2位可在方式0来工作

用于异步或者条件传输方式。

对输入和输出数据都锁存。

方式2:双向传输方式

只适用于端口A且需要端口C的5位做输入和输出选通信号

输入和输出都锁存,A在方式2下时,B即可工作在方式1

又可工作在方式0,端口C剩下3位在方式0

十二、

1.8253可编程定时/计数器用法:

CS A1 A0

0 0 0 选中计数器0

0 0 1 选中计数器1

0 1 0 选中计数器2

0 1 1 选中控制字寄存器

1 0 0 器件未选中

对8253计数器进行初始化需要对控制字寄存器写入控制字,控制字格式如下 D7 D6 D5 D4 D3 D2 D1 D0

6、7位用来选3个计数器

4、5用来控制计数器读写字节数及读写高低字节顺序

1、2、3、4用来选择计数器工作方式

0用来指定计数器码制,是二进制还是BCD

OT:

OUT DX,AL ,AL寄存器值输出到数据总线中,DX输出到地址总线中

更多相关推荐:
汇编语言总结

汇编语言学习体会大一大二期间学写了一些高级语言,如C语言和C++。在对一些实际问题的编程处理上使用这些高级语言显得很是方便。于是在刚接触这门课的时候就对其实用性产生了怀疑和一些的抵触情绪。再学习了一段时间后,虽…

汇编语言学习心得

汇编学习心得08网工一班李锐0804031002在大三接触汇编语言之前我们在计算机组成原理课程中就已经有所了解了但也只是略微明白一些如jmpmov这样的指令极度缺乏系统性的学习在接触这门课程后感到汇编语言并不是...

《汇编语言程序设计》学习总结与心得

其实说实话在学这门课之前自己对汇编语言一点都不了解,只知道它也是一种语言,而且是一门很少用的语言,可能很多人都是这么想的,或许在学这门课之前不少同学也有和我当初一样的思想,大概学学就好,反正以后很少能用到,毕竟…

汇编语言学习心得

汇编语言程序设计学习总结与心得班级09计本3班学号0姓名刘得分本学期学习了汇编语言汇编语言是面向机器的程序设计语言在汇编语言中用助记符代替操作码用地址符号或标号代替地址码这样用符号代替机器语言的二进制码就把机器...

汇编语言重点知识总结

汇编语言重点知识总结汇编速查手册汇编语言总结概要寄存器与存储器1寄存器功能寄存器的一般用途和专用用途CSIP控制程序执行流程SSSP提供堆栈栈顶单元地址DSBXSIDI提供数据段内单元地址SSBP提供堆栈内单元...

汇编语言个人学习总结

DOS的提示符下可如下键入Debug启动调试程序DEBUG路径文件名参数1参数2Debug后可以不带文件名仅运行Debug程序需要时再用N和L命令调入被调试程序命令中可以带有被调试程序的文件名则运行Debug的...

汇编语言实验心得

一实验内容1DEBUG的启动及其基本命令的使用2内存操作数与寻址方式1利用DEBUG程序中的E命令将两个多字节数12345678H和FEDCBA98H分别送入起始地址为DS0200H和DS0204H两个单元中2...

汇编语言总结

一一个完整的源程序的结构一个源程序一般由若干个段组成每个分段可以是栈段数据段和代码段一个源程序可以有多个栈段数据段和代码段从语法规则上来看栈段是有明显标志的代码段最好的类型为CODE的标记并用CS作为段界寄存器...

汇编语言小结

数据寻址方式1立即数寻址方式MOVAH12H12H为字节立即数MOVAX1234H1234H为字立即数2寄存器寻址方式MOVAXBX3直接寻址方式存储器直接寻址方式MOVAX100H4寄存器间接寻址MOVAXS...

汇编语言期末总结(小抄必备)

执行部件EU主要由算术逻辑运算单元ALU标志寄存器FR通用寄存器组和EU控制器等4个部件组成其主要功能是执行指令总线接口部件BIU主要由地址加法器专用寄存器组指令队列和总线控制电路等4个部件组成其主要功能是形成...

汇编语言考点总结

第一章基础知识一机器语言即机器指令机器可以正确执行的命令的集合二汇编语言的产生汇编指令是机器指令便于记忆的书写格式即助记符编译三汇编语言的组成汇编指令机器码的助记符伪指令由编译器执行其他符号由编译器识别四存储器...

汇编语言与接口技术要点总结

第二章微型计算机结构18086的段式存储结构段地址偏移量地址存储单元的物理地址或者段寄存器的值16偏移地址存储单元的物理地址2段寄存器通用寄存器指针与变址寄存器标志寄存器3寻址方式1寻址方式的概念2寻址方式的分...

汇编语言总结(41篇)