1、知识点第一章 基础知识(1)正负数的补码表示, 掌握计算机中数和字符的表示;eg.假设机器字长为 8 位,+3补 =00000011 B,-3补= 11111101 H 。十六进制数 0FFF8H 表示的十进制正数为 65528D ,表示的十进制负数为 -8D 。8 位二进制数被看成是带符号补码整数时,其最小值是 -128 ,最大值是 127 。第二章 80x86 计算机组织(1)中央处理机 CPU 的组成和 80x86 寄存器组,重点:专用寄存器,段寄存器eg: IP 寄存器中保存的是?代码段中的偏移地址 FLAGS 标志寄存器中共有几位条件状态位 6 位,有几位控制状态位 2 位,标志寄存
2、器分为哪 2 类?陷阱标志,中断标志。 (2)存储单元的地址和内容 每一个字节单元给以一个唯一的存储器地址,称为物理地址;一个存储单元中存放的信息称为该存储单元的内容。存储器地址的分段, (低位字节存放)低地址, (高位字节存放)高地址 ;实模式下逻辑地址、选择器和偏移地址 ;物理地址的表示 段基地址加上偏移地址。eg.如果 SS=6000H,说明堆栈段起始物理地址是_60000H_。 已知字节(00018H)=14H,字节(00017H)=20H,则字(00017H)为_1420H_。如果(SI)=0088H, (DS)=5570H,对于物理地址为 55788H 的内存字单元,其内容为 02
3、35H,对于物理地址为 5578AH 的内存字单元,其内容为 0E60H,那么执行指令 LDS SI,SI以后,(SI)= 0235H ,(DS)= 0E60H .第三章 80x86 的指令系统和寻址方式与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址) 。数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令) 、算术指令(加法指令、减法指令(*加减指令对4 个标志位的影响of,cf,sf,zf) 、乘法
4、指令(*乘法指令的要求:目的操作数必须是累加器) 、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?) ) 、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST 指令及指令执行后对标志位的影响) 、移位指令) 、串处理指令(与 REP 相配合工作的MOVS、STOS、LODS 指令,与 REPE/REPZ 和 REPNE/REPNZ 联合工作的 CMPS、SCAS指令) 、控制转移指令(无条件转移指令、条件转移指令、循环指令、子程序调用指令、中断) 。eg.【习题3.8】假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0
5、100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1) MOV AX, 0ABH (2) MOV AX, BX(3) MOV AX, 100H (4) MOV AX, VAL(5) MOV AX, BX (6) MOV AX, ES:BX(7) MOV AX, BP (8) MOV AX, SI(9) MOV AX, BX+10 (10) MOV AX, VALBX(11) MOV AX, BXSI (12) MOV AX, VALBXSI假定 (DS )= 1000H, (SS)= 2000H, ( SI
6、)= 3000H, (BX)= 0100H, (BP)= 0200H,数据段中变量名为 OVAR 的偏移地址值为 0050H,请指出下列源操作数的寻址方式是什么?其物理地址值是多少?1. MOV DX, 1000H2. MOB DX, BX3. MOV DX, OVARBP4. MOV DX, BX+SI5. MOV DX, OVARBXSI如果 JMP 指令采用段间间接寻址,那么转移地址存放在 4 个相邻字节单元中,其中前两个字节存放的是 偏移地址 ,而后两个字节存放的是 段地址 。设 SP=4AH,执行段内返回指令 RET 4 后,SP 的值是 50H 。重复前缀指令 REP 的重复次数由
7、 计数寄存器 Count Reg 决定。在串操作指令前使用重复前缀指令 REPE,终止串的重复操作条件是(Count Reg)=0 或 ZF=0 条件转移指令的转移范围?(只能做段内的短转移)转移指令 JMP NEAR PTR PROCA 的转移范围是 8000H7FFFH 。当标志位 CF =1 时表示无符号数运算产生溢出,而当标志位 OF =1 是表示带符号数运算产生溢出。计算机系统通过 和外部设备通信。循环控制指令 LoopNZ/LoopNE 控制循环继续执行的条件是_ZF=0 且(Count Reg)不等于 0_。DOS 系统功能调用方式为:(1)设置入口参数;(2)中断程序编号送 A
8、H 寄存器后执行 INT 21H。(教材 Page320,page335)阅读下面的程序片段,并分析执行结果。MOV AX,723AHMOV BX,0C86BH SUB AL,BLSBB AH,BHXOR AL,01HADC AX,0执行该程序片段后:(AX)= 0A9CEH ,CF = 0 ,OF = 0 。第四章 汇编语言程序格式伪操作:数据定义及存储器分配伪操作,表达式赋值伪操作 EQU,段定义伪操作、程序开始和结束伪操作、对准伪操作、基数控制伪操作。汇编语言程序格式:汇编语言源程序中的每个语句的组成格式:名字项、操作项(包括?) 、操作数项和注释项eg.1.在某数据段内定义变量BUFF
9、ER DB 30 DUP (20)表达式 TYPE BUFFER 的值为 1 。2.BUFl DB 3 DUP(0,2 DUP(1,2),3)COUNT EQU $-BUFl变量 COUNT 的值是 18 。3.DATA SEGMENTDB 2EH DUP(0) VAR1 DB 12H,34HVAR2 DB 10H DUP(O)ADR1 DW VAR1,VAR2DATA ENDS为使 ADR1+2 字存储单元中内容为 0030H,横线上应选用的语句是_ORG $+30H_。4.BUF DW 4,6,$+2,若汇编时 BUF 分配的偏移地址是 0042H,则汇编后 BUF数组中第三个字的值是 0
10、048H 。5.设某数据段: DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DBCOMPUTERDB 0AH,0DHCOUNT EQU $-DA1DA2 DW CO,MP,UT ,ERDATA ENDS请回答:(1)DA1的偏移地址是: 0020H 。(2)COUNT的值是 10 。(3)DA2+5 字节单元的内容是 U 。6.执行下列指令序列后,AX 寄存器中的内容是什么?TABLE DW 10,20,30,40,50ENTRY DW 3MOV BX, OFFSET TABLEADD BX, ENTRYMOV AX, BX7. 下面指令执行后,变量 DA
11、B 中的内容是_0F5H_。DAW DW 2A05H DAB DB 0FAH : MOV AL,BYTE PRT DAW SUB DAB,AL第五章 循环与分支程序设计循环程序结构,分支程序结构eg. BEG为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。请在空行处各填上一条指令完善该程序。MOV CX,31HLEA SI,BEGMOV DI,SIADD DI,99 DON:MOV AL,SIXCHG AL,DI MOV SI,ALINC SI DEC DILOOP DON阅读如下程序段: ADRR DB XXH,XXH,XXHNUM EQU -
12、ADRR RETT DB? MOV CX,NUM MOV BX,-1 DON:INC BX CMP ADRRBX,0LOOPZ DONJNZ NEXTMOV BL,OFFHNEXT:MOV RETT,BLHLT请回答(1)该程序完成的功能是什么? 在以 ADRR为起始地址的数组中,查找第一个非 0数据(2)程序执行后RETT字节单元中的内容是什么? 若找到则将第一个非零数据在数组中的偏移量送入 RETT单元中;若无非 0数据,则将 0FFH送入 RETT单元中。阅读如下程序片段,回答所提出的问题,假定X1,X2,XN为无符号数。 ORG 100HBLOK DW X1,X2,XNCOUNT EQ
13、U(-BLOK)/2RESULT DW ? LEA BX,BLOK-2MOV CX,COUNTXOR AX,AXGOON:ADD BX,2CMP AX,BXJAE NEXTMOV AX,BXNEXT:LOOP GOONMOV RESULT,AX程序片段执行完后,RESULT字单元的内容= MAX(X1,X2,Xn) ,(BX)= 100H+2*(COUNT-1) ,程序循环次数= COUNT 。下列程序片段用来分别统计ARRAY数组中奇数和偶数的个数。请在空白处填写合适的指令。 DATA SEGMENTARRAY DW 23ABH,1570H,567,1765H,46,5210HCOUNT E
14、QU ($-ARRAY)/2DA1 DB ?DA2 DB ?DATA ENDSLEA SI,ARRAYMOV CX,COUNTLOP1:MOV AX,SITEXT AX,0001H JZ LOP2INC BLJMP LOP3LOP2:INC BHLOP3:ADD SI,2 DEC CXJNZ LOP1MOV DA1,BLMOV DA2,BH下列程序片段调用单个字符显示的2号功能显示STRING中的字符串COMPUTER(不显示字符$)。 (调用DOS的2号功能实现) STRING DBCOMPUTER,$设AX,BX中的数一个为正数,一个为负数,编写程序片段完成将正数送到PLW单元中存放 。编
15、程实现:TEST AX,8000H JE K1 或 JZ K1 MOV PLW,BX JMP DONE K1: MOV PLW,AX DONE: 习题 5.3,5.231.从键盘输入一个以$为结束符的字符串,统计其中的非数字字符个数。DSEG SEGMENTBUFF DB 50 DUP ( )COUNT DW 0DSEG ENDSBEGIN: LEA BX, BUFFMOV COUNT, 0INPUT: MOV AH, 01 ;INT 21HMOV BX, ALINC BXCMP AL, $ ;JNZ INPUT ;LEA BX, BUFF ;NEXT: MOV CL, BXINC BXCMP
16、 CL, $ ;JZ DISPCMP CL, 30H ;JB NEXTCMP CL, 39H ;JA NEXTINC COUNT ;JMP NEXTDISP: ;2. 试编写一程序段求出双字长数的绝对值。双字长数在 A 和 A+2 单元中,结果存放在 B 和 B+2 单元中。MOV AX, AMOV DX, A+2CMP DX, 0JNS ZHENSHU ;不是负数则转走NEG DXNEG AXSBB DX, 0ZHENSHU: MOV B, AXMOV B+2, DXINT 20H3. 把 0100 之间的 30 个数存入以 GRADE 为首地址的 30 字数组中,GRADE+i表示学号为
17、i+1 的学生的成绩。另一个数组 RANK 为 30 个学生的名次表,其中RANK+i 的内容是学号为 i+1 的学生的名次。编写一程序,根据 GRADE 中的学生成绩,将学生名次填入 RANK 数组中。(一个学生的名次等于成绩高于这个学生的人数加 1。) DSEG SEGMENTGRADE DW 30 DUP (?) ;RANK DW 30 DUP (?)DSEG ENDS;-CSEG SEGMENTMAIN PROC FARASSUME CS: CSEG, DS: DSEGSTART: PUSH DS ;SUB AX, AXPUSH AXMOV AX, DSEGMOV DS, AX ;BE
18、GIN: MOV DI, 0MOV CX, 30 ;LOOP1: PUSH CXMOV CX, 30 ;MOV SI, 0MOV AX, GRADE DIMOV DX, 1 ;LOOP2: CMP GRADE SI, AX ;JBE GO_ONINC DX ;GO_ON: ADD SI, 2LOOP LOOP2POP CXMOV RNAK DI, DX ;ADD DI, 2LOOP LOOP1RETMAIN ENDPCSEG ENDS ;-END STAR4.写出执行以下计算的指令序列,其中 X、Y、W 和 Z 均为存放 16 位带符号数单元的地址。Z(W-X)/5*Y)*2 MOV AX,
19、WSUB AX, XCWDMOV BX, 5IDIV BXIMUL YSHL AX, 1 ;(DX),(AX)*2RCL DX, 15. 实现下列算式:W=X+Y+36-Z。设 X、Y、Z、W 均为双字长数据,各自的低十六位数和高十六位数分别存放在 X、X+2、Y、Y+2、Z、Z+2 的存储单元中,结果的低十六位字和高十六位字分别存放在 W 和 W2 两个单元中。DATA SEGMENTX DD.Y DD.Z DD.W DD.DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,XADD AX,Y
20、MOV BX,X+2ADC BX,Y+2ADD AX,36ADC BX,0SUB AX,ZSBB BX,Z+2MOV W,AXMOV W+2,BXCODE ENDSENG START6. 试编制一源程序,统计 DA1 字单元中含 0 的个数,如统计的个数为奇数,则将进位位置 1,否则进位位清 0。DATA SEGMENTDA1 DW *DATA ENDSSTACK1 SEGMENT PARA STACKDB 10H DUP( 0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DH,0MOV AX,DA1MOV CX,16LOOP:SHL AX,1JC NEXT1INC DHNEXT1:LOOP LOPCLCTEST DH,1JZ END0STCEND0: MOV AH,4CHINT 21HCODE:END SEND START