汇编语言程序设计知识点.pdf

上传人:赵** 文档编号:69182560 上传时间:2022-12-31 格式:PDF 页数:13 大小:511.71KB
返回 下载 相关 举报
汇编语言程序设计知识点.pdf_第1页
第1页 / 共13页
汇编语言程序设计知识点.pdf_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《汇编语言程序设计知识点.pdf》由会员分享,可在线阅读,更多相关《汇编语言程序设计知识点.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!1 汇编语言程序设计知识点 第一章 基础知识(1)正负数的补码表示,掌握计算机中数和字符的表示;1、假设机器字长为 8 位,+3补=00000011B,-3补=FD H。2、十六进制数 0F8H 表示的十进制正数为 248,表示的十进制负数为-8。3、8 位二进制数被看成是带符号补码整数时,其最小值是-128,最大值是 127。4、计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍采用的是 ASCII 码,称为美国信息交换标准码。第二章 80 x86 计算机组织(1

2、)中央处理机 CPU 的组成和 80 x86 寄存器组,重点:专用寄存器,段寄存器 1、IP 寄存器中保存的是?下一条指令的首地址 2、FLAGS 标志寄存器中共有几位条件状态位?6 位 3、有几位控制状态位?3 位 4、标志寄存器分为哪 2 类?条件码,控制 5、哪个标志位用来控制可屏蔽中断请求是否被 CPU 响应?IF 6、键盘 I/O、显示 I/O 和打印 I/O 分别对应16、10 和 17号中断。(2)存储单元的地址和内容,存储器地址的分段,实模式下逻辑地址、物理地址的表示。1、如果 SS=6000H,说明堆栈段起始物理地址是60000H。2、已知字节(00018H)=14H,字节(

3、00017H)=20H,则字(00017H)为 1420H。3、如果数据段中一个内存单元对应的物理地址为 3F756H,(DS)=3F00H,那么使用 DS 段寄存器指明该单元的段基值时,需要使用哪一个偏移量才能正确访问该单元756H。4.如果(SI)=0088H,(DS)=5570H,对于物理地址为 55788H 的内存字单元,其内容为 0235H,对于物理地址为 5578AH 的内存字单元,其内容为 0E60H,那么执行指令 LDS SI,SI以后,(SI)=0235H ,(DS)=0E60H .第三章 80 x86 的指令系统和寻址方式(1)与数据有关的寻址方式(立即寻址方式,寄存器寻址

4、方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址).数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令)、算术指令(加法指令、减法指令(*加减指令对 4 个标志位的影响of,cf,sf,zf)、乘法指令(*乘法指令的要求:目的操作数必须是累加器)、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?)、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST 指令及指令执行后对标志位的影响)、移位指令)、串处理指令(与 REP 相配合工作

5、的 MOVS、STOS、LODS 指令,与 REPE/REPZ 和 REPNE/REPNZ欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!2 联合工作的 CMPS、SCAS 指令)、控制转移指令(无条件转移指令、条件转移指令、循环指令、子程序调用指令、中断)。1、假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1)MOV AX,0ABH 立即寻址 操作数在指

6、令中(2)MOV AX,BX 寄存器寻址 操作数为(BX)=0100H(3)MOV AX,100H 直接寻址 20100H(4)MOV AX,VAL 直接寻址 20050H(5)MOV AX,BX 寄存器间接寻址 20100H(6)MOV AX,ES:BX 寄存器间接寻址 21100H(7)MOV AX,BP 寄存器间接寻址 15010H(BP默认段为SS)(8)MOV AX,SI 寄存器间接寻址 200A0H(9)MOV AX,BX+10 寄存器相对寻址 20110H(10)MOV AX,VALBX 寄存器相对寻址 20150H(11)MOV AX,BXSI 基址变址寻址 201A0H(12

7、)MOV AX,VALBXSI 相对基址变址寻址 201F0H 2、假定(DS)=1000H,(SS)=2000H,(SI)=3000H,(BX)=0100H,(BP)=0200H,数据段中变量名为 OVAR 的偏移地址值为 0050H,请指出下列源操作数的寻址方式是什么?其物理地址值是多少?1.MOV DX,1000H 直接寻址 11000H 2.MOB DX,BX 寄存器间接寻址 10100H 3.MOV DX,OVARBP 寄存器相对寻址 10250H 4.MOV DX,BX+SI 寄存器相对寻址 13100H 5.MOV DX,OVARBXSI 相对基址变址寻址 13150H (2)数

8、据传送指令(通用数据传送指令、累加器专用传送指令)算术指令(加法指令、减法指令(*加减指令对 4 个标志位的影响of,cf,sf,zf)、乘法指令(*乘法指令的要求:目的操作数必须是累加器)除法指令(*被除数在累加器中,除法指令执行完以后,商和余数?)逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST 指令及指令执行后对标志位的影响)、移位指令)串处理指令(与 REP 相配合工作的 MOVS、STOS、LODS 指令,与 REPE/REPZ 和 REPNE/REPNZ联合工作的 CMPS、SCAS 指令)控制转移指令(无条件转移指令、条件转移指令、循环指令、子程序、中断)1、将首地址为

9、STRING 的字节数组的第 7 个元素(编号从 0 开始)送到累加器 AL 中,用 SI寄存器相对寻址的指令为:MOV SI 6H 和 MOV AL STRINGSI 。2、下列ASCII码串(包括空格符)依次存储在起始地址为CSTRING的字节单元中:CSTRING DB BASED ADDRESSING 请编写指令将字符串中的第 1 个和第 7 个字符传送给 DX 寄存器。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!3 MOV DH CSRTING MOV DL CSRTING+7-1 3、如果 JMP 指令采用段间间接寻址,那么转移地址

10、存放在 4 个相邻字节单元中,其中前两个字节存放的是 偏移地址 ,而后两个字节存放的是 段地址。4、重复前缀指令 REP 的重复次数由 计数寄存器 Count Reg 决定。5、在串操作指令前使用重复前缀指令 REPE,终止串的重复操作条件是 Count Reg=0 或 ZF=0 6、当标志位 CF=1 时表示无符号数运算产生溢出,而当标志位 OF=1 是表示带符号数运算产生溢出。7、AL 和 VAR 字节单元中分别存放一个带符号数,执行 CMP AL,VAR 时,如果 ALVAR,那么溢出位和符号位的关系是。(OF=SF,还有发生溢出的情况,AL-VAL 尽管为负,但 OF=1,说明是由于结

11、果太大(负的太大)超出了带符号数的表示范围使得符号位为负的,正确的结果应该为正。)8、循环控制指令 LoopNZ/LoopNE 控制循环继续执行的条件是ZF=0 且 CountReg0。9.设 SP=4AH,执行段内返回指令 RET 4 后,SP 的值是 50H 。10.条件转移指令的转移范围?(只能做段内的短转移)11.转移指令 JMP NEAR PTR PROCA的转移范围是 8000H7FFFH 。12.计算机系统通过 主机系统 和外部设备通信。DOS 系统功能调用方式为:(1)设置入口参数;(2)中断程序编号送 AH 寄存器后执行 INT 21H。(教材 Page320,page335

12、)13.阅读下面的程序片段,并分析执行结果。MOV AX,723AH MOV BX,0C86BH SUB AL,BL SBB AH,BH XOR AL,01H ADC AX,0 执行该程序片段后:(AX)=0A9CEH ,CF=0 ,OF=0。(XOR 使 CF/OF 为 0)第四章 汇编语言程序格式(1)伪操作:数据定义及存储器分配伪操作,表达式赋值伪操作 EQU,段定义伪操作、程序开始和结束伪操作、对准伪操作、基数控制伪操作。(2)汇编语言程序格式:汇编语言源程序中的每个语句的组成格式:名字项、操作项(包括?)、操作数项和注释项 1、在某数据段内定义变量 BUFFER DB 30 DUP(

13、20)表达式 TYPE BUFFER 的值为 1 。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!4 2.BUFl DB 3 DUP(0,2 DUP(1,2),3)COUNT EQU$-BUFl 变量 COUNT 的值是 18 。3.DATA SEGMENT DB 2EH DUP(0)VAR1 DB 12H,34H VAR2 DB 10H DUP(O)ADR1 DW VAR1,VAR2 DATA ENDS 为使 ADR1+2 字存储单元中内容为 0030H,横线上应选用的语句是_ORG$+30H_。4.BUF DW 4,6,$+2,若汇编时 BU

14、F 分配的偏移地址是 0042H,则汇编后 BUF 数组中第三个字的值是 0048H 。5、设某数据段:DATA SEGMENT ORG 20H NUM1=8 NUM2=NUM1+10H DA1 DB COMPUTER DB 0AH,0DH COUNT EQU$-DA1 DA2 DW CO,MP,UT,ER DATA ENDS 请回答:(1)DA1的偏移地址是:20H。(2)COUNT的值是0AH。(3)DA2+5 字节单元的内容是 U的 ASCII 码。(DW/DB 储存字符串的方式不同)6、执行下列指令序列后,AX 寄存器中的内容是什么?TABLE DW 10,20,30,40,50 EN

15、TRY DW 3 MOV BX,OFFSET TABLE ADD BX,ENTRY MOV AX,BX 1E00H 7.下面指令执行后,变量 DAB 中的内容是_0F5H_。DAW DW 2A05H DAB DB 0FAH 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!5 :MOV AL,BYTE PRT DAW SUB DAB,AL 第五章 循环与分支程序设计(1)循环程序结构,分支程序结构 eg.BEG为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。请在空行处各填上一条指令完善该程序。MOV C

16、X,31H LEA SI,BEG MOV DI,SI ADD DI,99 DON:MOV AL,SI XCHG AL,DI MOV SI,AL INC SI DEC DI LOOP DON 1、阅读如下程序段:ADRR DB XXH,XXH,XXH NUM EQU$-ADRR ;NUM为ADRR数组空间大小 RETT DB?MOV CX,NUM ;CX中存放ADRR数组空间大小 MOV BX,-1 DON:INC BX ;BX值增一 CMP ADRRBX,0 ;访问ADRR数组中偏移地址为BX的值并与0比较 LOOPZ DON ;若大于0则继续DON循环 JNZ NEXT ;否则转至NEXT

17、MOV BL,OFFH ;若循环完未转至NEXT,则BL中为OFFH NEXT:MOV RETT,BL ;将BL中址送RETT HLT 请回答(1)该程序完成的功能是什么?在以Adrr为起始地址的数组中查找第一个非0数据(2)程序执行后 RETT 字节单元中的内容是什么?若找到非0数据,则将第一个非0数据在数组中的偏移量送入RETT单元中,若未找到,则将0FFH送入RETT单元中。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!6 2、阅读程序段:STRING DB ABCDEFGHIJ MOV AH,01 INT 21H AND AL,0FH ;

18、这条语句等价于减去30H DEC AL XOR AH,AH ;以上三条语句是将1-9的ASCII码转换为1-9 MOV BX,OFFSET STRING ADD BX,AX ;BX+AX,即将BX中存放待输出字符的偏移地址 MOV BL,BX ;将STRING中偏移地址为BX的字符取出 MOV AH,02H INT 21H 请回答:(1)上述程序段的功能是什么?上述程序段的功能是根据从键盘输入的字符 1 9,确定在显示器上显示STRING中第几个字符。(2)从键盘输入字符 4,程序段有什么结果?输出D 3、阅读程序段:BLOCK DB 20H,1FH,08H,81H,OFFH RESULT D

19、B?START:LEA SI,BLOCK ;使SI指向BLOCK单元首地址 MOV CX,SI ;将SI地址中操作数传送到CX寄存器中 INC SI ;SI指向下一个地址 MOV AL,SI;将SI中操作数传送到AL寄存器中 LOP1:CMP AL,SI+1;比较BLOCK/BLOCK+1地址中操作数 JNG NEXT ;若BLOCKBLOCK+1则转至NEXT MOV AL,SI+1;否则将BLOCK+1中数送入AL寄存器 NEXT:INC SI ;SI指向下一个地址 LOOP LOP1 ;循环执行LOP1 MOV RESULT,AL;将AL中数送入RESULT中 问:(1)该程序完成的功能

20、是从32个有符号数中找出最小的送入RESULT中。(2)该程序循环的次数是31次。4、下列程序片段用来分别统计ARRAY数组中奇数和偶数的个数。请在空白处填写合适的指令。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7 DATA SEGMENT ARRAY DW 23ABH,1570H,567,1765H,46,5210H COUNT EQU ($-ARRAY)/2 ;COUNT为数组中元素个数 DA1 DB?DA2 DB?DATA ENDS LEA SI,ARRAY ;SI中存放ARRAY首地址 MOV CX,COUNT ;CX中存放数组元素个

21、数 LOP1:MOV AX,SI ;将ARRAY中偏移地址为SI的元素送AX TEST AX,0001H ;最低为为1则为奇数,否则为偶数 JZ LOP2 INC BL JMP LOP3 LOP2:INC BH LOP3:ADD SI,2 ;SI地址值增2 DEC CX JNZ LOP1 MOV DA1,BL MOV DA2,BH 5.阅读如下程序片段,回答所提出的问题,假定X1,X2,XN为无符号数。ORG 100H BLOK DW X1,X2,XN COUNT EQU(-BLOK)/2 RESULT DW?LEA BX,BLOK-2 MOV CX,COUNT XOR AX,AX GOON:

22、ADD BX,2 CMP AX,BX JAE NEXT MOV AX,BX NEXT:LOOP GOON 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!8 MOV RESULT,AX 程序片段执行完后,RESULT字单元的内容=MAX(X1,X2Xn),(BX)=100H+2*(COUNT-1),程序循环次数=COUNT 。6.下列程序片段调用单个字符显示的 2号功能显示STRING中的字符串COMPUTER(不显示字符$)。(调用DOS的2号功能实现)STRING DBCOMPUTER,$设AX,BX中的数一个为正数,一个为负数,编写程序片段完

23、成将正数送到PLW单元中存放。编程实现:TEST AX,8000H JE K1或JZ K1 MOV PLW,BW JMP DONE K1:MOV PLW,AX DONE:7、将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别存放在AL、BL、CL、DL寄存器中。DATAREA SEGMENT TEMP DB 4 DUP(?)DATAREA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATAREA MOV DS,DATAREA START:MOV CL,4 MOV CH,4 LEA BX,TEMP ;将 TEMP 地址值送 BX ROTATE:MOV D

24、X,AX ;将 AX 寄存器值送 DX AND DL,0FH ;将 DX 寄存器高 8 位清零 MOV BX,DL ;DX 寄存器低 8 位地址送入 BX 中 INC BX ;BX 增 1 SHR AX,CL ;逻辑作揖 DEC CH ;循环数减 1 JNZ ROTATE ;若循环未完成则继续循环 MOVE:MOV DL,TEMP+1 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!9 MOV CL,TEMP+2 MOV BL,TEMP+3 MOV AL,TEMP+4 MAIN ENDP CODE ENDS END START 8、已定义了两个整数

25、变量 A、B,试编写程序完成下列功能:1、若两个数中有一个是奇数,则将奇数存放在 A 中,偶数存放在 B 中。2、若两个数均为奇数,则将两数均加 1 后存回原变量。DATAREA SEGMENT A DW?B DW?DATAREA ENDS CSEG SEGMENT MAIN PROC FAR ASSUME CS:CSEG,DS:DATAREA START:PUSH DS SUB AX,AX PUSH AX MOV AX,DATAREA MOV DS,AX BEGIN:MOV AX,A MOV BX,B XOR AX,BX ;AX,BX 异或 TEST AX,0001H ;测试最低位,0 则两

26、数同奇偶 JZ CLASS ;为 0 则转至 CLASS TEST BX,0001H ;若最低位为 0 则为偶数,否则为奇数 JZ EXIT ;为 0 则转至 EXIT XCHG BX,A ;交换 BX/A 中值,即 A 中存放奇数 MOV B,BX ;将 BX 中数送入 B 中,B 中存放偶数 JMP EXIT CLASS:TEST BX,0001H ;测试 BX 是否为奇数 JZ EXIT ;不是则转至 EXIT INC B ;否则 B 自增 1 INC A ;A 自增 1 EXIT:欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!10 RET

27、 MAIN ENDP CSEG ENDS END START 9、判断寄存器 AH 和 AL 中第 3 位是否相同,如相同,AH 置 0,否则 AH 置全 1。答:XOR AH,AL ;异或判定是否相同,结果存放在 AH 中 AND AH,40H ;将除第三位外的所有位置 0 JNZ ONE ;若不为 0,即不相等,转至 ONE MOV AH,0 ;否则 AH 置 0 JMP NEXT ONE:MOV AH,0FFH ;AH 置全 1 NEXT:10、实现下列算式:W=X+Y+36-Z。设 X、Y、Z、W 均为双字长数据,各自的低十六位数和高十六位数分别存放在 X、X+2、Y、Y+2、Z、Z+

28、2 的存储单元中,结果的低十六位字和高十六位字分别存放在 W 和 W2 两个单元中。答:DATA SEGMENT X DD Y DD Z DD W DD DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV DS,AX MOV AX,X ADD AX,Y MOV BX,X+2 ADC BX,Y+2 ADD AX,36 ADC BX,0 SUB AX,Z SBB BX,Z+2 MOV W,AX MOV W+2,BX CODE ENDS END START 11、写出执行以下计算的指令序列,其中 U、V、W 和 Z 均为存放 16 位带符号

29、数单元的地址。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!11 ZW-(U+6)-(V+9)答:MOV AX,U ADD AX,6 MOV CX,V ADD CX,9 MOV BX,W SUB BX,AX SBB BX,CX MOV Z,BX 12、试编写一程序段求出双字长数的绝对值。双字长数在 A 和 A+2 单元中,结果存放在 B和 B+2 单元中。答:MOV AX,A MOV DX,A+2 CMP DX,0 JNS ZHENGSHU NEG DX ;求补 NEG AX ;求补 SBB DX,0 ;减 1,即求出对应正数 ZHENGSHU:

30、MOV B,AX MOV B+2,DX INT 20H 13.从键盘输入一个以$为结束符的字符串,统计其中的非数字字符个数。DSEG SEGMENT BUFF DB 50 DUP()MOV COUNT,0 INPUT:MOV AH,01;INT 21H MOV BX,AL INC BX CMP AL,$;JNZ INPUT;LEA BX,BUFF;NEXT:MOV CL,BX INC BX CMP CL,$;JZ DISP CMP CL,30H;JB NEXT CMP CL,39H;JA NEXT INC COUNT;欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为

31、您提供优质的文档!12 JMP NEXT DISP:|;14.把 0100 之间的 30 个数存入以 GRADE 为首地址的 30 字数组中,GRADE+i 表示学号为i+1的学生的成绩。另一个数组 RANK为30个学生的名次表,其中RANK+i的内容是学号为 i+1 的学生的名次。编写一程序,根据 GRADE 中的学生成绩,将学生名次填入 RANK 数组中。(一个学生的名次等于成绩高于这个学生的人数加1。)答:程序如下:DSEG SEGMENT GRADE DW 30 DUP(?)RANK DW 30 DUP(?);-CSEG SEGMENT MAIN PROC FAR ASSUME CS:

32、CSEG,DS:DSEG START:PUSH DS;SUB AX,AX PUSH AX MOV AX,DSEG MOV DS,AX;BEGIN:MOV DI,0 MOV CX,30;LOOP1:PUSH CX MOV CX,30;MOV SI,0 MOV AX,GRADEDI MOV DX,1;LOOP2:CMP GRADESI,AX;JBE GO_ON INC DX;GO_ON:ADD SI,2 LOOP LOOP2 POP CX MOV RNAKDI,DX;ADD DI,2 LOOP LOOP1 RET MAIN ENDP CSEG ENDS;-END START 15.写出执行以下计算

33、的指令序列,其中X、Y、W 和 Z 均为存放 16 位带符号数单元的地址。Z(W-X)/5*Y)*2 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!13 答:MOV AX,W SUB AX,X CWD MOV BX,5 IDIV BX IMUL Y SHL AX,1;(DX),(AX)*2 RCL DX,1 16.试编制一源程序,统计 DA1 字单元中含 0 的个数,如统计的个数为奇数,则将进位位置 1,否则进位位清 0。DATA SEGMENT DA1 DW*DATA ENDS STACK1 SEGMENT PARA STACK DB 10H DUP(0)STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DH,0 MOV AX,DA1 MOV CX,16 LOOP:SHL AX,1 JC NEXT1 INC DH NEXT1:LOOP LOP CLC TEST DH,1 JZ END0 STC END0:MOV AH,4CH INT 21H CODE END$END START

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁