微机原理与汇编语言复习资料

上传人:fgh****35 文档编号:180628365 上传时间:2023-01-07 格式:DOC 页数:13 大小:543KB
收藏 版权申诉 举报 下载
微机原理与汇编语言复习资料_第1页
第1页 / 共13页
微机原理与汇编语言复习资料_第2页
第2页 / 共13页
微机原理与汇编语言复习资料_第3页
第3页 / 共13页
资源描述:

《微机原理与汇编语言复习资料》由会员分享,可在线阅读,更多相关《微机原理与汇编语言复习资料(13页珍藏版)》请在装配图网上搜索。

1、1.计算机由运算器,控制器,存储器,输入设备,输出设备等5大基本部件组成。2.冯诺依曼提出存储设计思想是:数字计算机的数制采用二进制,存储程序,程序控制。3.计算机的基本组成框图:4.微型计算机系统的3个层次:(1)微处理器:也叫微处理机,它本身并不是计算机,微处理器是微型计算机的核心部件,又叫中央处理器(CPU),微处理器包括算术逻辑部件,控制部件和寄存器组3个基本部分;(2)微型计算机:简称微机,是指以CPU为核心,并配以存储器(ROM和RAM),输入输出接口电路,系统总线及相应的外部设备而构成的完整的,可独立工作的计算机。(3)微型计算机系统:是以微型计算机为核心,再配以相应的外围设备,

2、电源,辅助电路和控制微型计算机工作的软件而构成的完整的计算机系统。(4)三者的关系:密切的相互依存关系。4.机器字长:指计算机能同时进行多少位的二进制数运算。5.操作系统:是系统软件中最重要的部分,功能是对计算机系统的全部硬件和软件资源进行统一管理、统一调度、统一分配。6.存储程序工作原理(存储程序、程序控制)(1)计算机系统由运算器、控制器、存储器、输入设备、输出设备组成,并规定了他们的功能(2)程序和数据在计算机中用二进制数表示(3)计算机的工作过程是由存储程序控制的7.一个字节等于(8)个二进制位,1KB=1024字节。8.在计算机内部,一切信息的存取、处理与传送均采用二进制9.一个完整

3、的计算机应包括硬件系统和软件系统10.微型计算机硬件系统的性能主要取决于微处理器11.微处理器的数据基本单位为字。一个字的长度通常为 16位二进制。12.计算机字长所取决的是数据总线宽度。13.8086的内部结构从功能上分成两个单元1.总线接口单元BIU:管理8086与系统总线的接口;负责CPU对存储器和外设进行访问2.执行单元EU:负责指令的译码、执行和数据的运算两个单元相互独立,分别完成各自操作,还可以并行执行,实现指令预取(指令读取和执行的流水线操作)14.8088有8个通用的16位寄存器(1)数据寄存器:累加器AX;基址寄存器BX;计数寄存器CX;数据寄存器DX;(2)变址寄存器:源变

4、址寄存器SI;目的变址寄存器DI;(3)指针寄存器:堆栈指针SP;基址指针BP;(4)专用寄存器:指令指针IP;FR标志寄存器FR;(5)段寄存器:代码段寄存器CS;数据段寄存器DS;堆栈段寄存器SS;附加段寄存ES15.ALE(地址所存允许信号)输出、三态、高电平有效;ALE引脚高有效时,表示复用引脚:AD7 AD0和A19/S6 A16/S3正在传送地址信息;由于地址信息在这些复用引脚上出现的时间很短暂,所以系统可以利用ALE引脚将地址锁存起来。16.1)写出每条汇编指令执行后相关寄存器中的值。第一空:F4A3H第二空:31A3H第三空:3123H第四空:6246H第五空:826CH第六空

5、:6246H第七空:826CH第八空:04D8H第九空:0482H第十空:6C82H第十一空:D882H第十二空:D888H第十三空:D810H第十四空:6246H(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。解答如下:mov ax,2 add ax,ax add ax,ax add ax,ax17.总线周期IO/M*WR*RD*存储器读低高低存储器写低低高I/O读高高低I/O写高低高总线操作是指CPU通过总线对外的各种操作8086/8088的总线操作主要有:存储器读、I/O读操作存储器写、I/O写操作中断响应操作总线请求及响应操作CPU正在进行内部操作、并不进行实际

6、对外操作的空闲状态Ti。18.(1)时序:是指信号高低电平(有效或无效)变化及相互间的时间顺序关系CPU时序决定系统各部件间的同步和定时总线时序描述CPU引脚如何实现总线操作(2)指令周期:是指一条指令经取指、译码、读写操作数到执行完成的过程。若干总线周期组成一个指令周期(3)总线周期:是指CPU通过总线操作与外部(存储器或I/O端口)进行一次数据交换的过程19.存储器的主要性能指标:存储容量、存取速度、可靠性、性能价格比20.8088存储器写总线周期时序图(最小模式) T1状态输出20位存储器地址A19 A0;IO/M*输出低电平,表示存储器操作;ALE输出正脉冲,表示复用总线输出地址;T2

7、状态输出控制信号WR*和数据D7 D0;T3和Tw状态检测数据传送是否能够完成;T4状态完成数据传送21.8088 I/O写总线周期 T1状态输出16位I/O地址A15 A0 ;IO/M*输出高电平,表示I/O操作;ALE输出正脉冲,表示复用总线输出地址;T2状态输出控制信号WR*和数据D7 D0 ;T3和Tw状态检测数据传送是否能够完成;T4状态完成数据传送22、存储器读总线周期 T1状态输出20位存储器地址A19 A0IO/M*输出低电平,表示存储器操作;ALE输出正脉冲,表示复用总线输出地址T2状态输出控制信号RD*T3和Tw状态检测数据传送是否能够完成T4状态前沿读取数据,完成数据传送

8、23.I/O读总线周期T1状态输出16位I/O地址A15 A0 ;IO/M*输出高电平,表示I/O操作;ALE输出正脉冲,表示复用总线输出地址;T2状态输出控制信号RD*T3和Tw状态检测数据传送是否能够完成T4状态前沿读取数据,完成数据传送24.cache-内存层次和内存-外存层次25.设CS=B000H、DS=1CDEH、SS=4200H、ES=0150H,它们分别为代码段、数据段、堆栈段和附加段的段首址。自每个段首址开始,各段均占64KB的范围,各段之间互不重叠。如图所示。26.设CS=0200H、DS=0400H、SS=0480H,这样代码段、数据段和堆栈段的物理首地址分别为02000

9、H、04000H和04800H。其中代码段占8KB地址空间,数据段占2KB,堆栈段占256B,SP=0100H。如图所示。 26.在显示器上显示“How are you ?”,然后读一个字符,但不显示此字符,若读入字符是y则显示ok。 DSEG SEGMENTDAT1 DBHow are you ?,0DH,0AH,$DAT2 DBOK,0DH,0AH,$DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART:MOV AX,DSEGMOV DS,AXMOV DX,OFFSET DAT1MOV AH,9INT 21H ;显示提示信息MOV AH,8INT

10、 21H ;输入字符不回显CMP AL,YJNE NEXTLEA DX,DAT2 ;显示okMOV AH,9INT 21HNEXT:MOV AH,4CH ;返回DOSINT 21HCSEG ENDSEND START27.屏幕显示“PASS WORD ?”,随后从键盘读入字符串,并比较这个字符串与内部设定的字符串,若两者相同,则显示“ok”,否则不作任何显示。 DSEG SEGMENTPASS1 DB12ABN EQU $-PASS1DT1 DB“PASS WORD”,0DH,0AH,$PASS2 DB 20 ;最大长度DB ? ;实际长度DB 20 DUP(?)DT2 DBOK $DSEG

11、ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG,ES:DSEGSTART:MOV AX,DSEGMOV DS,AXMOV ES,AXLEA DX,DT1MOV AH,9INT 21H ;显示“PASS WORD”LEA DX,PASS2MOV AH,0AHINT 21H ;等待键盘输入字符串LEA SI,PASS1LEA DI,PASS2CMP BYTE PTR DI+1,N ;检查字符个数是否相等JNE LASTMOV CX,NLEA DI,PASS2+2CLDREPZ CMPSB ;检查字符是否匹配JNZ LAST ;不匹配,程序结束DISOK:LEA DX,

12、DT2 ;匹配,显示OKMOV AH,9INT 21HLAST:MOV AH,4CHINT 21HCSEG ENDSEND START28.编写一个程序,求W=(X2-Y2)/ Z,设X、Y、均为一个8位无符号数,运算不考虑溢出。分析:表达式改写为W=(X+Y)(X-Y)/Z,因为表达式简单,根据表达式运算次序来编写程序,由于运算不考虑溢出,所以不考虑(X+Y)256情况。解:程序清单如下:DSEG SEGMENTDATX DB 80 ;假定X为80DATY DB 50 ;定义Y的值DATZ DB 5 ;定义Z的值DATW DB ? ;定义保存计算结果的存储单元DSEG ENDSSTEG SE

13、GMENT PARA STACKDW 20H DUP(0)STEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG,SS:STEGBEGIN:MOV AX,DSEGMOV DS,AXMOV AL,DATX ;取XADD AL,DATY ;计算(X+Y)(AL)MOV BL,DATX ;取XSUB BL,DATY ;计算(X-Y)(BL)MUL BL ;计算(X+Y)(X-Y)(AX)MOV CL,DATZ ;取ZDIV CL ;计算(X+Y)(X-Y)/ZMOV DATW,AL ;保存结果MOV AH,4CH ;返回DOSINT 21HCSEG ENDSEND B

14、EGIN29.编写一个程序,实现键入任一个字符,显示其十进制的ASC码(例如:键入A,显示41H)。 分析:首先接受一个字符,其ASC码一定在0255之间,把二进制的ASCH码转换为十进制后输出即可。转换的算法是:用该数除以100,商是二进制的百位;再把余数除以10,商是二进制的十位;余数是二进制的个位。二进制的百位、十位、个位加上30H即为字符的百位、十位、个位,然后输出即可。解:程序清单如下:CODE SEGMENTASSUME CS:CODESTART:MOV AH,1INT 21H ;读一个按键MOV AH,0 ;准备做AX100,所以要把AH清0MOV BL,100 ;除法指令不允许

15、用立即数,把除数放在BL中DIV BL ;除以100MOV CL,AL ;保存商,即百位数ADD CL,30H ;把百位数转化成ASC码MOV AL,AH ;取除以100的余数到BL中,作下一次的被除数MOV AH,0 ;被除数高位部分清0MOV BL,10 ;准备除数10DIV BL ;除以10ADD AL,30H ;商是十位数,转换成ASC码ADD AH,30H ;把余数个位数转换成ASC码MOV BX,AX ;用BX保存转换后的十位和个位数字MOV AH,2MOV DL,13INT 21H ;输出回车MOV DL,10INT 21H ;输出换行符MOV DL,CL ;输出百位数INT 2

16、1HMOV DL,BL ;输出十位数INT 21HMOV DL,BH ;输出个位数INT 21HMOV AH,4CHINT 21HCODE ENDSEND START30.以BUF为首地址的内存单元中存有115的平方表。查表求X单元中数(在115之间)的平方值,并送回X单元。分析:表是一种常见的数据结构,平方表是一个数据表,为便于查表,需要组织好表的结构,即表中的平方值按顺序存放。查表的方法是顺序查表法,以X为索引值,将索引值和平方表的首地址相加,其和作为表内偏移地址,取出相应X的平方值。解:程序清单如下:NAME EXAM3DATA SEGMENTBUF DB 1,4,9,16,25,36,

17、49,64DB 81,100,121,144,169,196,255X DB 12DATA ENDSSTACK SEGMENT STACK STACKDB 100 DUP(?)STACK ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACK ;段地址说明START:MOV AX,DATAMOV DS,AX ;数据段地址装填(堆栈段地址由系统装填)MOV SI,OFFSET BUF ;取BUF的偏移量XOR AX,AX ;AX清0MOV AL,X ;取XDEC ALADD SI,AX ;X平方值的地址MOV AL,SI ;取X的平方值MOV X,ALMOV

18、 AH,4CHINT 21H ;返回DOSCODE ENDSEND START31.以BUF为首地址的内存单元中,存放若干个8位的带符号数,统计0的数的个数,并将结果存入RESULT字节单元中。 解:程序清单如下:DATA SEGMENTBUFF DB 1,-4,90,16,0,36,-49,-68CNT EQU $-BUFFRESULT DB ?DATA ENDSSTACK SEGMENT PARA STACKDB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK ;段地址说明START:MOV AX,DATAMO

19、V DS,AX ;数据段地址装填(堆栈段地址由系统装填)LEA SI, BUFF ;取BUFF的偏移量MOV DL,0 ;DL清0MOV CL,CNT ;取符号数的总个数,设置循环次数LOP1: MOV AL,SICMP AL,0 ;和0比较JL LOP2 ;小于0时转移INC DL ;统计大于等于0的个数LOP2: INC SI ;修改地址指针DEC CL ;CL减1JNZ LOP1 ;CL不为0转移到LOP1MOV RESULT,DL ;传送统计结果到存储单元MOV AH,4CHINT 21H ;返回DOSCODE ENDSEND START32.设一个字节的二进制数存放在BINNUM单元

20、中。编写程序将它转换成十六进制数的形式显示在屏幕上。 分析:显示字符用DOS的2号功能调用,要显示的字符的ASC码必须装入DL中。因为4位二进制数对应1位十六进制数,一个字节的二进制数对应2位十六进制数。十六进制数每位代码是09和AF,对应的ASC码为30H39H和41H46H,因此程序中要判断该数的大小,若在09范围,加上30H,若在AF之间,则加上37H。解:程序清单如下:DATA SEGMENTBINSUM DB 10001011BDATA ENDSSTACK SEGMENT PARA STACKDB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:C

21、ODE,DS:DATA,SS:STACK ;段地址说明START:MOV AX,DATAMOV DS,AX ;数据段地址装填(堆栈段地址由系统装填)MOV BL,BINSUM ;取二进制数MOV DL,BL ;开始处理高4位MOV CL,4 ;设置移位次数SHR DL,CL ;右移4位,取低4位ADD DL,30HCMP DL,9 ;与39H比较JBE DONE1 ;小于等于39H转移ADD DL,7 ;否则加7,转换为AFDONE1:MOV AH,2 ;显示高4位INT 21HAND BL,0FH ;开始处理低4位MOV DL,BLADD DL,30HCMP DL,3AH ;和A比较JB L

22、OP2 ;小于A时转移ADD DL,7 ;否则加7,转换为AFLOP2: MOV AH,2 ;显示低4位INT 21HMOV AH,4CHINT 21H ;返回DOSCODE ENDSEND START33.编写一个汇编程序,求1100的累加和。分析:程序功能简单,循环次数已经确定为100次,可以采用循环结构实现它。CODE SEGMENTASSUME CS:CODESTART:MOV AX,0MOV CX,100 ;设置循环次数LOP1: ADD AX,CX ;求累加和LOOP LOP1 ;CX减1不为0,则转移MOV AH,4CHINT 21H ;返回DOSCODE ENDSEND STA

23、RT34.设VARY中有一组8位的符号数,编程统计其中的正数、负数、零的个数,分别存入VM、VN、VK变量中。分析:数组VARY中的数据个数用CNT EQU $-VARY求出,则循环次数为CNT次。将数组VARY中的数据逐个与0比较,利用PSW(标志寄存器)中的ZF求出零的个数,利用SF求出正、负数的个数。解:参考程序如下:STACK SEGMENT PARA STACKDW 20H DUP(0)STACK ENDSDATA SEGMENTVARY DB 23H,78H,0ABH,0CDH,00H,56HDB 14H,86H,0EFH,0BCH,00H,0C0HCNT EQU $-VARYVM

24、 DB ?VN DB ?VK DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV BX,0 ;初始化MOV DL,0 ;清0LEA SI,VARY ;初始化地址指针MOV CX,CNT ;设置循环次数;循环体LOP1:CMP BYTE PTR SI,0 ;和0比较JE ZERO ;等于0转ZEROJS LOP2 ;为负数转LOP2INC BH ;统计正数个数的寄存器增1JMP NEXTLOP2:INC BL ;统计负数个数的寄存器增1JMP NEXTZERO:INC DL ;

25、统计0个数的寄存器增1NEXT:INC SI ;修改地址指针LOOP LOP1 ;判断终止条件,CX-10则循环;结束处理部分MOV VM,BH ;保存正数的个数MOV VN,BL ;保存负数的个数MOV VK,DL ;保存0的个数MOV AH,4CHINT 21H ;返回DOSCODE ENDSEND START35.编写程序,实现在同一行上依次显示26个大写字母 .CODE SEGMENTASSUME CS:CODESTART:MOV CX,26 ;设置循环次数MOV DL,A ;要显示的字符的ASC码必须装入DL中LOP1: MOV AH,2 ;显示字符用DOS的2号功能调用INT 21

26、HINC DL ;循环修改部分LOOP LOP1 ;CX减1不为0,则转移MOV AH,4CHINT 21H ;返回DOSCODE ENDSEND START36.编写程序,实现键入任意一个字符,显示其ASC码中含“1”的个数。CODE SEGMENTASSUME CS:CODESTART:MOV DL,0 ;计数器清0MOV AH,1 ;等待键入一个字符,键入的字符存放在AL中INT 21HLOP1: CMP AL,0 ;与0比较JE EXIT ;是0则转移到EXITSHL AL,1 ;左移1位ADC DL,0 ;统计1的个数JMP LOP1EXIT: ADD DL,30H ;二进制转换成A

27、SC码MOV AH,2 ;显示字符键入字符中含“1”的个数INT 21HMOV AH,4CHINT 21H ;返回DOSCODE ENDSEND START37.编写程序,将带符号的字节数组ARRY中最大数找出来,送到MAX单元中。分析:在字节数组中找出最大数,可以把第1个数送AL中,让AL与第2个数及它后面的每一个数进行比较,每次比较时将大者放AL中,最后把AL的值送MAX单元即可。解:参考程序如下:STACK SEGMENT PARA STACKDW 20H DUP(0)STACK ENDSDATA SEGMENTARRY DB 23H,78H,0ABH,0CDH,00H,56HDB 14

28、H,86H,0EFH,0BCH,100H,0C0HCNT EQU $-ARRY ;字节个数MAX DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXLEA SI,ARRY ;初始化地址指针MOV CX,CNT-1 ;设置循环次数MOV AL,SILOP1: INC SI ;地址指针增1CMP AL,SI ;与下一个数比较JGE LOP2 ;大于等于时转LOP2MOV AL,SI ;取较大的数放AL寄存器中LOP2: LOOP LOP1 ;判断终止条件,CX-10则循环MOV MA

29、X,AL ;保存最大数MOV AH,4CHINT 21H ;返回DOSCODE ENDSEND START38.以BUF为首地址的内存单元中,存放若干个8位的带符号数,统计0的数的个数,并将结果存入RESULT字节单元中。 解:程序清单如下:DATA SEGMENTBUFF DB 1,-4,90,16,0,36,-49,-68CNT EQU $-BUFFRESULT DB ?DATA ENDSSTACK SEGMENT PARA STACKDB 100 DUP(?)STACK ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACK ;段地址说明START:MOV AX,DATAMOV DS,AX ;数据段地址装填(堆栈段地址由系统装填)LEA SI, BUFF ;取BUFF的偏移量MOV DL,0 ;DL清0MOV CL,CNT ;取符号数的总个数,设置循环次数LOP1: MOV AL,SICMP AL,0 ;和0比较JL LOP2 ;小于0时转移INC DL ;统计大于等于0的个数LOP2: INC SI ;修改地址指针DEC CL ;CL减113

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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