湖工大学计通学院期末考试汇编语言历届考试重点提示:_第1页
湖工大学计通学院期末考试汇编语言历届考试重点提示:_第2页
湖工大学计通学院期末考试汇编语言历届考试重点提示:_第3页
湖工大学计通学院期末考试汇编语言历届考试重点提示:_第4页
湖工大学计通学院期末考试汇编语言历届考试重点提示:_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上湖工大学计通学院期末考试汇编语言历届考试重点提示:期末考试的内容包括平时作业以及实验的部分内容,还有上课的一些内容,编者吧从06级到10级的汇编考试整理了一下,与学弟学妹们分享!1.1简述计算机和微型计算机经过了那些主要的发展阶段?计算机:第一代为电子管计算机时代;第二代为晶体管计算机时代;第三代为集成电路计算机时代;第四代为大规模集成电路计算机时代;微型计算机:第一代为抵挡8位微处理器和微型计算机;第二代为中挡8位微处理器和微型计算机;第三代为16位微处理器和微型计算机;第四代为32位微处理器和微型计算机;第五代为64位微处理器和微型计算机;2.1简述8086和80

2、486CPU内部结构有哪些部件组成,并阐述它们结构上的同。8086由执行单元EU和总线接口部件组成;80486由总线接口部件、指令预取部件、指令译码部件、控制和保护测试单元部件、整数执行部件、分段部件、分页部件,以及浮点运算部件和高速缓存(Cache)管理部件。2.9简述时钟周期,总线周期和指令周期之间的关系。时钟周期:微处理器执行指令的最小时间单位,又称T状态。它通常与微机的主频有关;总线周期:CPU对存储器或I/O端口完成一次读/写操作所需的时间;指令周期:CPU执行下一条指令所需的时间。指令周期有若干个总线周期组成,不同的指令执行的时间都不同。1.(1)用两种方法从44H端口输入数据到A

3、L;a.INAL,44Hb.MOV DX,44HINAL,DX (2)用两种方法将56H输出到98H端口。a.MOV AL, 56HOUT 98H, ALb.MOV AL, 56HMOV DX, 98HOUT DX, AL2.求AX,BX中两个无符号数之差的绝对值,并将结果存在当前数据段2800H单元中。MOV DI, 2800HCMP AX, BXJC DELAYSUB AX, BXMOV DI, AXHLTDELAY: SUB BX, AXMOV DI, BXHLT3.用逻辑指令完成下列操作:(1)将BL的最低2位置1,其他位不变;OR BL, 03H(2)将DI的最高3位清0,其他位不变

4、;AND DI, 1FFFH(3)将CX的最低位和最高位取反,其他位不变;XOR CX, 8001H(4)测试DX的最低2位是否为0,全为0则转到DELAY出执行。TEST DX, 0003HJZ DELAY . .DELAY: 4.设计一个延时子程序DELAY。DELAY PROCPUSH CXPUSH DIPUSHFMOV CX, 6000HAB0: MOV DI, 5000HAB1: DEC DIJNZ AB1LOOP AB0POPFPOP DIPOP CXRET DELAY ENDP(延时:5000H*6000H)5.已知某外设端口A地址为288H,端口B为28AH,编程以A端口输入数

5、据再从B端口输出,程序一直运行,按任意键退出。CODE SEGMENTASSUME CS: CODESTART: MOV DX, 288HIN AL, DXMOV DX, 28AHOUT DX, ALMOV AH, 01HINT 16HJE STARTMOV AH, 4CHINT 21HCODE ENDSEND START一. 实验实验二1.用汇编语言编写一个计算“3+5”的加法程序,执行后显示计算结果。code segmentassume cs:codestart: mov al,33hmov dl,35hadd dl,alsub dl,30hmov ah,02hint 21hmov ah,

6、4chint 21hcode endsend start2.用汇编语言编写一个求AX与BX寄存器中两个无符号数之差的绝对值,将结果放在DX中。(文件名用自己的名字扩展名为.ASM)code segmentassume cs:codestart: cmpax,bxjcdelaysubax,bxmovdx,axhltdelay: subbx,axmovdx,bxhltcode endsend start实验三1.编写一个加法程序,完成“1325+9839”要求用ASCII码形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加的结果显示出来。DATA SEGMENTDATA1 DB 5,

7、 2, 3, 1 DATA2 DB 9, 3, 8, 9, 0DATA ENDSSTACK SEGMENT PARA STACK STACK DB 64 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS: DATA, SS:STACK,ES:DATA START PROC FARPUSH DSMOV AX, 00HPUSH AXMOV AX, DATAMOV DS, AXMOV ES, AX ;初始化程序CLD ;DF为0,为正向串MOV SI, OFFSET DATA1 ;取数据1352所在存储单元的偏移地址MOV DI, OFFSET DATA

8、2 ;取数据9839所在存储单元的偏移地址MOV CX, 04H ;计算次数CXMOV AX, 00H ;将暂存标志寄存器的内容的AH寄存器清“0”LOP1:LODS DATA1 ;取串操作,SI AL,SI+1 SISAHF ;AH中的内容送标志寄存器ADC AL,DI ;将操作数带进位做加法AAA ;ASCII码运算的十进制加法调整LAHF ;将标志寄存器的内容暂存在AH寄存器OR AL, 30H ;计算值拼成ASCII码ALSTOSB ;存串操作,ALDI,DI+1DILOOP LOP1 ;循环结束否?未结束转到LOP1AND AH, 01H ;结束将最高位的进位标志AHOR AH, 3

9、0H ;将最高位的进位拼成ASCII码MOV DI, AH ;并送到DATA2的最后一个字节中MOV AH, 02H ;调用DOS中断的02h功能MOV CX,05H ;显示数据位CXLOP2: MOV DL, DI ;将要显示数据送DL中INT 21H ;调用DOS的21H号中断 DEC DI ;显示数据所在存储单元地址减“1”LOOP LOP2 ;显示完否?未显示完转到LOP2RET ;显示完返回DOS状态CODE ENDSEND START实验四1.分类统计字数组ARRAY中正数、负数和零的个数,并分别存入内存字变量POST、NEGA和ZERO中,数组元素个数保存在数组的第一个字中。DA

10、TA SEGMENTARRAY DW 8 ; 元素个数 DW 230, -1437, 26, -31, 0, 3458, 0, 10POST DW 0 NEGA DW 0 ZERO DW 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX XOR AX, AX ; 用AX作为正数的计数器 XOR BX, BX ; 用BX作为负数的计数器 XOR DX, DX ; 用DX作为零的计数器 MOV CX, ARRAY ; 用CX来进行循环计数 JCXZ DONE ; 考虑数组的元素个数为0的情

11、况 LEA DI, ARRAY+2; ; 用指针DI来访问整个数组AGAIN: CMP WORD PTRDI, 0 ; 与0做比较 JG HIGH ; 大于0,为正数 JE EQUAL ; 等于0 INC BX ; 小于0,为负数,负数个数增1 JMP NEXTHIGH: INC AX ; 正数个数增1 JMP NEXTEQUAL: INC DX ; 0的个数增1NEXT: INC DI INC DI LOOP AGAIN DONE: MOV POST, AX ; 把各类的统计数保存到内存单元中 MOV NEGA, BX MOV ZERO, DX MOV AX, 4C00H ; 结束程序返回D

12、OS INT 21HCODE ENDS END START实验五1.设计编写一个程序,要求执行时显示DO you love me?Y/N输入y(ASCII=79H)就停止执行,返回DOS状态,按其它键则重复显示DO you love me? Y/N。data segmentbuf db Do you love me?Y/N,0ah,0dh,$data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset bufmov ah,9int 21hmov ah,1int 21hcmp al,yje e

13、xitcmp al,Yje exitmov dl,0ahmov ah,2int 21hmov dl,0dhmov ah,2int 21hjmp startexit:mov ah,4chint 21hcode endsend start实验六1. 设计编写一个程序,从键盘上输入一串字符,计算每个字符出现的次数,并在屏幕上显示这个数字。DATA SEGMENTBUFFER DB 100DB ?DB 100 DUP(?)CHARS DB INPUT:$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC FAR PUSH DS SUB AX,AX

14、PUSH AX MOV AX,DATA MOV DS,AXSTART: MOV DX,OFFSET CHARS MOV AH,9 INT 21H MOV DX,OFFSET BUFFER MOV AH,0AH INT 21H MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H MOV SI,OFFSET BUFFER INC SI MOV AL,SI INC SI MOV DL,SI MOV DH,SI MOV DI,SI MOV CL,AL MOV CH,0 MOV BL,1 MOV BH,0 DEC CLGO1: INC SI C

15、MP DL,SI JNE TO1 INC BLTO1: LOOP GO1 CALL OUTPUT MOV BL,1TO5: INC DI DEC AL CMP AL,1 JE TO3 CMP DH,DI JE TO5 MOV DL,DI MOV SI,DI MOV CL,AL MOV CH,0 DEC CLGO2: INC SI CMP SI,DL JNE TO2 INC BL MOV SI,DHTO2: LOOP GO2 CALL OUTPUT MOV BL,1 JMP TO5TO3: CMP DH,DI JE TO4 MOV DL,DI MOV BL,1 CALL OUTPUTTO4: R

16、ETMAIN ENDP OUTPUT PROC PUSH AX PUSH CX PUSHF MOV AH,2 INT 21H MOV DL,20H MOV AH,2 INT 21H MOV AL,BL MOV AH,0 MOV CL,10 DIV CL ADD AH,30H ADD AL,30H MOV CH,AH MOV DL,AL MOV AH,2 INT 21H MOV DL,CH MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H POPF POP CX POP AX RETOUTPUT EN

17、DPCODE ENDS END MAIN实验七1.设计编写一个程序,要求键盘输入单字符,但不显示,而是将该单字符的ASCII码加1后再显示出来(即输入A显示B,输入B则显示C),程序一直运行,按ESC键则退出。code segmentassume cs:codestart:mov ah,8int 21hcmp al,1Bhje exitadd al,1mov dl,almov ah,2hint 21hjmp startexit:mov ah,4Chint 21hcode endsend start二. 平时听课1.8086为16位微处理器,数据总线16位,地址总线20位。2.系统复位后,CPU

18、从FFFF0H地址开始重新执行程序。3.使AX清零:MOV AX,0;SUB AX,AX;XOR AX,AX。4.设DS=1000H,12000H=67H,12001H=45H;MOV AX,2000H则AX=4567H。5.用两条指令完成将标志的低8位中ZF(D6),CF(D0),设置为1,其他位变为0:AH:01_0_0_1则AH可为=41H;所以:MOV AH,41HSAHF6.比较DI,SI,如DISI顺序向下执行。CMP DI,SIJC delayJZ AD1.delay:HLTAD1:HLT7.MOV AX, 8889H SAR AX, 1 则AX=C444H,CF=1; MOV

19、BX, 56H RCL BX, 1 则BX=00ADH,CF=0。8.设32位数在DX:AX中,实现32位数整个左移1位:SAL AX,1RCL DX,19.用五条指令完成将当前数据段中3000H3100H单元的内容,对应的传送到当前附加段5000H5100H单元中去:CLDMOV CX, 101HMOV SI, 3000HMOV DI,5000HREP MOVSB10.将附加段中4000H5000H单元的内容全部清零:CLDMOV CX, 1001HMOV DI, 4000HMOV AL, 0HREP STOSB或STDMOV DI, 5000HMOV AL, 0HMOV CX, 1001H

20、REP STOSB11.设源串在1000H:2000H开始的100个字节单元中,要求将源串送到3000H:1020H开始的目的串中:MOV AX, 1000HMOV DS, AXMOV SI, 2000HMOV AX, 3000HMOV ES, AXMOV DI, 1020HCLDMOV CX, 64HREP MOVSB12.比较两个串,发现有不同的字符时则停止比较:CLDMOV CX, 100MOV SI, 2500HMOV DI,1400HREPE CMPSB13.按ESC键退出:CMP AL,1BHJE EXIT . .EXIT: MOV AH,4CH INT 21H14.按任意键退出:

21、MOV AH, 1HINT 21HJNE EXIT . .EXIT: MOV AH, 4CH INT 21H三. CPU各标志的含义标志10溢出标志OFOVNV溢出非溢出方向标志DFDNUP递减递增中断允许IFEIDI允许不允许符号标志SFNGPL负的正的零标志ZFZRNZ零非零辅助进位AFACNA有进位无进位奇偶校检PFPEPO偶数个计数个进位标志CFCYNC有进位无进位四. 伪指令segment,assume,end,DB,DW,proc,PTR操作符1. 段定义:段名segment段名ends2. 段分配:assume 段寄存器:段名,段寄存器:段名,3. 程序结束:end 标号4. 变

22、量定义:变量名DB/DW 表达式 或 n DUP (操作数)5. 过程定义:过程名 proc 属性 RET 过程名 endp6. PTR运算符(可用来修改变量或标号的类型属性):类型 PTR 表达式五. 8086CPU的内部结构组成及各寄存器的用法1. 内部结构:执行单元EU和总线接口部件BIU2. 段寄存器用法:A. 通用数据寄存器:AX,BX,CX,DX;AX作为累加器,BX作为基址寄存器,CX作为计数寄存器,DX作为数据寄存器B. 指针及变址寄存器:SP,BP,SI,DI;通常用来存放存储器单元的16位偏移地址;SP用来指示堆栈顶的偏移地址,称为堆栈指针;BP用来存放堆栈中的一个数据区的

23、“基址”的偏移量,称为基址指针;SI,DI称为变址寄存器,用来存放当前数据所在存储单元的偏移地址,在串操作指令中,SI用来存放源操作数地址的偏移量,称为源变址寄存器,DI用来存放目标操作数地址的偏移量,称为目标变址寄存器。C. 段寄存器:CS,DS,SS,ESD. 指令指针:IP:IP的内容总是指向BIU将要取的下一条指令代码的16位偏移地址E. 标志寄存器:FR:16位只是用9位;其中6位为状态标志位,用来反映算术运算或逻辑运算结果的状态;3位控制位,用来控制CPU的操作。六. 8086CPU的读写操作的理解七. Debug命令D命令功能:显示数据段中指定单元或单元块的内容。E命令功能:修改

24、内存单元内容命令A功能:进行程序段汇编命令U功能:从代码段中指定的位置对机器代码进行反汇编,得到相应的助记符形式的指令。命令R功能:RR命令就用来显示所有寄存器内容,包括标志寄存器中的8个状态标志位的状态,并在最后提示下一条将要执行的指令。RAXR后面跟上一个寄存器的名称,这时R命令就用来显示这个寄存器的内容并等待修改。RF功能是显示和修改标志位状态。命令G功能:运行程序命令T功能:单步执行程序八. 逻辑地址与物理地址理解与计算1. 逻辑地址:由段基址和偏移地址两部分构成,它们的是无符号16位二进制数;逻辑地址是用户进行程序设计师采用的地址2. 物理地址:CPU访问内存是使用的地址:物理地址=段基址*16+偏移地址九. 数值转换1._H=_D_D=_H_H=_B_D=_B十. 负数的补码表示的计算1.-B=B的反码+1十一. 各段寄存器的理解和用途1. CS:代码段寄存器,用来存放当前使用的代码的段基址2. DS:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论