第3章数据的7种寻址方式,包括指令的格式,功能,指令的正误判断。
20位物理地址的生成:将段地址添上一个0(十六进制),再加上偏移地址。
数据传送指令:MOV PUSH,POP,XCHG,LEA,IN,OUT1、MOV ,注意指令的正误判断,可从3点入手。
(1)指令格式(2)数据大小是否超出范围(3)类型是否匹配。
通常,不能在两个内存单元间直接传送,段寄存器间不能直接传送,立即数不能直接传送到段寄存器,不能用CS作目的操作数。
2、PUSH 入栈指令,先减后压。
不能对字节进行压栈操作。
3、POP 出栈指令,先弹后加,将栈顶的一个字弹出到目的操作数。
4、EXCHG 交换指令。
不能在两个内存单元间直接交换。
5、LEA 取有效地址指令。
6、IN 输入指令,当端口大于255时,要用DX来表示端口号。
7、OUT 输出指令,当端口大于255时,要用DX来表示端口号算术运算等指令1、ADD AL,[1000H]例:AL=85H,BL=79H,执行指令ADD AL,BLAL= 0FEH ,CF= 0 ,OF= 02、SUB AL,BL3、INC [1000H] ERRORINC BYTE PTR [1000H]INC WORD PTR [1000H]该指令不影响CF标志4、DEC [1000H] ERRORDEC BX5、NEG AL 求相反数例:Y=X,X>=0; Y=|X|,X<0,编写程序段实现该功能MOV AL,XCMP AL,0JGE Y1NEG ALY1:MOV Y,ALHLT编程序的思路:取数据,在CPU里做运算,存数据;如果数据较多,通常要设指针,再取数据,取完数据后,修改地址指针,又取下一个数据,循环下去。
6、CMP AL,BL无符号数,A表示大,B表示小,E表示相等。
有符号数,G表示大,L表示小,E表示相等。
例:CMP AX,BXJGE NEXTXCHG AX,BXNEXT: CMP AX,CXJGE DONEXCHG AX,CXDONE:该程序段的功能是找AX,BX,CX中最大的数,并把最大的数放在AX中。
例:MOV CX,0LOP:AND AX,AXJZ STPSAL AX,1JNC LOPINC CXJMP LOPSTP:HLT该程序段的功能是找AX中“1”的个数,存入CX中。
位运算指令1、AND,OR,NOT,XOR,TESTAND指令通常用来对指定位清0。
例:把DL的第5位清0,其余位保持不变AND DL,11011111BOR指令通常用来对指定位置1。
例:把DL的第5位置1,其余位保持不变。
OR DL,00100000BXOR指令通常用来对指定位取反。
例:把DL的第5位取反,其余位保持不变。
XOR DL,00100000B2、SHL,SAL,SHR,SAR,ROL,ROR,RCL,RCR,当移位次数为1时,直接写移位次数;当移位次数大于1时,要把移位次数放入CL中。
控制转移类指令1、JMP,JC,JNC,JO,JNO,JA,JAE,JB,JBE,JE,JG,JL,JGE,JLE,复习时参看习题3.5(1),(3),3.6,3.9(2),3.112、LOOP,先减后判断第4章例:求SUM=D1+D2编写完整程序实现该功能。
DA TA SEGMENTD1 DB 5D2 DB 7SUM DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,D1MOV BL,D2ADD AL,BLMOV SUM,ALMOV AH,4CHINT 21HCODE ENDSEND START例:Y=1,X>0;Y=0,X=0;Y=-1,X<0;编写完束程序实现该功能。
DA TA SEGMENTX DB -78Y DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,XCMP AL,0JE Y1JG Y2MOV Y,-1JMP OVERY1:MOV Y,0JMP OVERY2:MOV Y,1OVER: MOV AH,4CHINT 21HCODE ENDSEND START例:用数据定义语句完成下述功能:(1)将ABC为首址的内存单元初始化为12,34,6个-5。
ABC DB 12,34,6 DUP(-5)(2)定义字符串ABC为“STUDENT”ABC DB ‘STUDENT’例:习题4.19,编写一个完整的源程序,将BUF字节单元存放的两位BCD码,转换成2个字节的ASCII码,并分别存放在ASC和ASC+1字节单元中。
DA TA SEGMENTBUF D B 54HASC D B ?,?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,BUFMOV CL,4SHR AL,CL;05HADD AL,30HMOV ASC,ALMOV AL,BUFAND AL,0FHADD AL,30HMOV ASC+1,ALMOV AH,4CHINT 21HCODE ENDSEND START例:4.16试编写一程序段,在CHAR为首址的26个字节单元中依次存放字母‘A’-‘Z’LEA BX,CHARMOV CX,26MOV AL,'A'NEXT: MOV [BX],ALINC BXINC ALLOOP NEXTHLT例:判断AL中的数据是否为负数,若为负数,将BL设置为-1,否则将BL设置为1,编写程序段实现该功能。
CMP AL,0JL Y1MOV BL,1JMP OVERY1: MOV BL,-1OVER: HLT例:判断AL中的数据是否为偶数,若为偶数,将BL设置为0,否则将BL设置为1,编写程序段实现该功能。
SHR AL,1JNC Y1MOV BL,1JMP OVERY1: MOV BL,0OVER: HLT例:编写完整的汇编语言源程序求1-100的累加和,并将和存入SUM内存单元中.DATA SEGMENTSUM DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV AX,0;AX用来存入累加和MOV BX,1;BX为加数MOV CX,100;循环次数NEXT: ADD AX,BXINC BXLOOP NEXTMOV SUM,AXMOV AH,4CHINT 21HCODE ENDSEND START例:数据段定义如下,编写完整的汇编语言源程序统计数组ARRAY中负元素的个数,存入RS单元中。
DATA SEGMENTARRAY DB -10,23,98,-24,90,45,98RS DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXLEA BX,ARRAYMOV CX,7;数组中的元素个数MOV DL,0;统计负数个数NEXT: MOV AL,[BX]CMP AL,0JL Y1JMP AGAINY1: INC DLAGAIN: INC BXLOOP NEXTMOV AH,4CHINT 21HCODE ENDSEND STARTDOS系统功能调用方法:(1)入口参数送指定寄存器。
(2)功能号送AH。
(3)INT 21H第5章1、根据在计算机系统中的地位,存储器可分为内存和外存,相比较而言,内存容量小,执行速度快。
2、存储器中的数据组织:在微机系统中,内存一般以字节编址。
存放一个字时,按“低低高高”的原则进行存放,即低字节放在低地址,高字节放在高地址。
例:设DS=1000H,BX=2000H,(12000H)=34H,(12001H)=56H,则指令MOV AX,[BX]执行后,AX=5634H.M3、存储器芯片的存储容量表示为:2M *Nbit, M表示地址线的位数,N表示数据线的位数。
例:若有一内存芯片,其容量为212 *8bit, 则该芯片有12条地址线,有8条数据线。
例:有一存储器系统容量为16KB,选用512*4bitRAM芯片构成该系统,需多少芯片?16KB的存储系统最少需多少寻址线?16KB=64片512*4bit16KB的存储系统最少需:16*210 =2 14,故最少需要14条寻址线。
4、RAM称为随机读写存储器,可分为静态和动态两种。
ROM称为只读存储器,可分为掩膜ROM,PROM,EPROM,EEPROM。
5、推算芯片地址范围的方法:(1)列出20位地址标记。
A19.......A0(2)确定出芯片的片内最低地址,即全为0,确定出芯片的片内最高地址,即全为1,之后确定出片外的地址为0或为1(对最低地址和最高地址页言,片外地址都相同)(3)将上述最低地址,最高地址写为5位十六进制形式即可。
确定芯片的地址范围,需要掌握138译码器输入与输出的对应关系,3个使能端的接法例:P193图5-13,P209习题5.4,5.86、片选控制的3种方法:全译码,部分译码,线选。
全译码:全部地址线都参与译码,存储器芯片中的任意单元都有唯一确定的地址。
部分译码:部分地址线参与译码,存储单元的地址有重叠。
线选:不需要译码器芯片,用于构成容量较小的存储器系统。
第6章1、接口:外设同微机间用来实现数据传送的控制电路称为接口。
端口:接口中可由CPU进行读或写的寄存器称为端口。
按存放信息的类型来分,端口可分为“数据口”,“状态口”,“控制口”。
CPU同外设交换的信息为数据信息、控制信息和状态信息。
2、I/O端口的编址方式有两种,即独立编址和统一编址。
8086系统采用独立编址,用16条地址线来访问端口,故端口可多达64K个。
8086系统用20条地址线来访问内存,故内存的最大空间为1MB.3、查询方式的过程(1)通过执行一条输入指令,读取所选外设的当前状态。
(2)若外设正处于“忙”或“未准备就绪”,则程序转回继续检测外设状态;如果外设处于“空”或“准备就绪”,则发出一条输入/输出指令,进行一次数据传送。
第7章1、可屏蔽中断:微处理器内部能够屏蔽的中断,称为可屏蔽中断。
若中断允许标志IF=0,则屏蔽INTR引脚上的中断。
不可屏蔽中断:微处理器内部不能屏蔽的中断,称为不可屏蔽中断,8086引脚NMI上的中断,即为不可屏蔽中断。
用指令STI开放中断,CLI关闭中断。
2、中断嵌套:当CPU执行优先级较低的中断服务程序时,允许响应优先级比它高的中断源请求中断,而挂起正在处理的中断,这就是中断嵌套。