微机原理考点Word格式.docx

上传人:b****5 文档编号:17102331 上传时间:2022-11-28 格式:DOCX 页数:18 大小:22.57KB
下载 相关 举报
微机原理考点Word格式.docx_第1页
第1页 / 共18页
微机原理考点Word格式.docx_第2页
第2页 / 共18页
微机原理考点Word格式.docx_第3页
第3页 / 共18页
微机原理考点Word格式.docx_第4页
第4页 / 共18页
微机原理考点Word格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

微机原理考点Word格式.docx

《微机原理考点Word格式.docx》由会员分享,可在线阅读,更多相关《微机原理考点Word格式.docx(18页珍藏版)》请在冰豆网上搜索。

微机原理考点Word格式.docx

DELAYPROC

PUSHCX

PUSHDI

PUSHF

MOVCX,6000H

AB0:

MOVDI,5000H

AB1:

DECDI

JNZAB1

LOOPAB0

POPF

POPDI

POPCX

RET

DELAYENDP

(延时:

5000H*6000H)

5.已知某外设端口A地址为288H,端口B为28AH,编程以A端口输入数据再从B端口输出,程序一直运行,按任意键退出。

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,288H

INAL,DX

MOVDX,28AH

OUTDX,AL

……

MOVAH,01H

INT16H

JESTART

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

 

二.实验

实验二

1.用汇编语言编写一个计算“3+5”的加法程序,执行后显示计算结果。

codesegment

assumecs:

code

start:

moval,33h

movdl,35h

adddl,al

subdl,30h

movah,02h

int21h

movah,4ch

codeends

endstart

2.用汇编语言编写一个求AX与BX寄存器中两个无符号数之差的绝对值,将结果放在DX中。

(文件名用自己的名字扩展名为.ASM)

codesegment

cmpax,bx

jcdelay

subax,bx

movdx,ax

hlt

delay:

subbx,ax

movdx,bx

实验三

1.编写一个加法程序,完成“1325+9839”要求用ASCII码形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加的结果显示出来。

DATASEGMENT

DATA1DB‘5’,‘2’,‘3’,‘1’

DATA2DB‘9’,‘3’,‘8’,‘9’,‘0’

DATAENDS

STACKSEGMENTPARASTACK‘STACK’

DB64DUP(?

STACKENDS

ASSUMECS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA

STARTPROCFAR

PUSHDS

MOVAX,00H

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVES,AX;

初始化程序

CLD;

DF为0,为正向串

MOVSI,OFFSETDATA1;

取数据1352所在存储单元的偏移地址

MOVDI,OFFSETDATA2;

取数据9839所在存储单元的偏移地址

MOVCX,04H;

计算次数→CX

MOVAX,00H;

将暂存标志寄存器的内容的AH寄存器清“0”

LOP1:

LODSDATA1;

取串操作,[SI]→AL,SI+1→SI

SAHF;

AH中的内容送标志寄存器

ADCAL,[DI];

将操作数带进位做加法

AAA;

ASCII码运算的十进制加法调整

LAHF;

将标志寄存器的内容暂存在AH寄存器

ORAL,30H;

计算值拼成ASCII码→AL

STOSB;

存串操作,AL→[DI],DI+1→DI

LOOPLOP1;

循环结束否?

未结束转到LOP1

ANDAH,01H;

结束将最高位的进位标志→AH

ORAH,30H;

将最高位的进位拼成ASCII码

MOV[DI],AH;

并送到DATA2的最后一个字节中

MOVAH,02H;

调用DOS中断的02h功能

MOVCX,05H;

显示数据位→CX

LOP2:

MOVDL,[DI];

将要显示数据送DL中

INT21H;

调用DOS的21H号中断

DECDI;

显示数据所在存储单元地址减“1”

LOOPLOP2;

显示完否?

未显示完转到LOP2

RET;

显示完返回DOS状态

实验四

1.分类统计字数组ARRAY中正数、负数和零的个数,并分别存入内存字变量POST、NEGA和ZERO中,数组元素个数保存在数组的第一个字中。

ARRAYDW8;

元素个数

DW230,-1437,26,-31,0,3458,0,10

POSTDW0

NEGADW0

ZERODW0

DATAENDS

CODESEGMENT

CODE,DS:

DATA

MOVAX,DATA

MOVDS,AX

XORAX,AX;

用AX作为正数的计数器

XORBX,BX;

用BX作为负数的计数器

XORDX,DX;

用DX作为零的计数器

MOVCX,ARRAY;

用CX来进行循环计数

JCXZDONE;

考虑数组的元素个数为0的情况

LEADI,ARRAY+2;

;

用指针DI来访问整个数组

AGAIN:

CMPWORDPTR[DI],0;

与0做比较

JGHIGH;

大于0,为正数

JEEQUAL;

等于0

INCBX;

小于0,为负数,负数个数增1

JMPNEXT

HIGH:

INCAX;

正数个数增1

EQUAL:

INCDX;

0的个数增1

NEXT:

INCDI

LOOPAGAIN

DONE:

MOVPOST,AX;

把各类的统计数保存到内存单元中

MOVNEGA,BX

MOVZERO,DX

MOVAX,4C00H;

结束程序返回DOS

INT21H

ENDSTART

实验五

1.设计编写一个程序,要求执行时显示'

DOyouloveme?

Y/N'

输入y(ASCII=79H)就停止执行,返回DOS状态,按其它键则重复显示'

Y/N'

datasegment

bufdb'

Doyouloveme?

0ah,0dh,'

$'

dataends

codesegment

code,ds:

data

movax,data

movds,ax

movdx,offsetbuf

movah,9

movah,1

cmpal,'

y'

jeexit

Y'

movdl,0ah

movah,2

movdl,0dh

jmpstart

exit:

实验六

1.设计编写一个程序,从键盘上输入一串字符,计算每个字符出现的次数,并在屏幕上显示这个数字。

BUFFERDB100

DB?

DB100DUP(?

CHARSDB'

INPUT:

CODE,DS:

MAINPROCFAR

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETCHARS

MOVAH,9

MOVDX,OFFSETBUFFER

MOVAH,0AH

MOVDL,0AH

MOVAH,2

MOVDL,0DH

MOVSI,OFFSETBUFFER

INCSI

MOVAL,[SI]

MOVDL,[SI]

MOVDH,[SI]

MOVDI,SI

MOVCL,AL

MOVCH,0

MOVBL,1

MOVBH,0

DECCL

GO1:

CMPDL,[SI]

JNETO1

INCBL

TO1:

LOOPGO1

CALLOUTPUT

TO5:

DECAL

CMPAL,1

JETO3

CMPDH,[DI]

JETO5

MOVDL,[DI]

MOVSI,DI

GO2:

CMP[SI],DL

JNETO2

MOV[SI],DH

TO2:

LOOPGO2

JMPTO5

TO3:

JETO4

TO4:

RET

MAINENDP

OUTPUTPROC

PUSHCX

PUSHF

MOVDL,20H

MOVAL,BL

MOVAH,0

MOVCL,10

DIVCL

ADDAH,30H

ADDAL,30H

MOVCH,AH

MOVDL,AL

MOVDL,CH

POPF

POPCX

POPAX

OUTPUTENDP

ENDMAIN

实验七

1.设计编写一个程序,要求键盘输入单字符,但不显示,而是将该单字符的ASCII码加1后再显示出来(即输入A显示B,输入B则显示C……),程序一直运行,按ESC键则退出。

movah,8

cmpal,1Bh

addal,1

movdl,al

movah,2h

movah,4Ch

三.平时听课

1.8086为16位微处理器,数据总线16位,地址总线20位。

2.系统复位后,CPU从FFFF0H地址开始重新执行程序。

3.使AX清零:

MOVAX,0;

SUBAX,AX;

XORAX,AX。

4.设DS=1000H,[12000H]=67H,[12001H]=45H;

MOVAX,[2000H]则AX=4567H。

5.用两条指令完成将标志的低8位中ZF(D6),CF(D0),设置为1,其他位变为0:

AH:

01_0_0_1则AH可为01000001=41H;

所以:

MOVAH,41H

SAHF

6.比较DI,SI,如DI<

SI转delay执行,DI=SI转AD1执行,DI>

SI顺序向下执行。

CMPDI,SI

JCdelay

JZAD1

.

delay:

HLT

AD1:

7.MOVAX,8889H

SARAX,1则AX=C444H,CF=1;

MOVBX,56H

RCLBX,1则BX=00ADH,CF=0。

8.设32位数在DX:

AX中,实现32位数整个左移1位:

SALAX,1

RCLDX,1

9.用五条指令完成将当前数据段中3000H~3100H单元的内容,对应的传送到当前附加段5000H~5100H单元中去:

CLD

MOVCX,101H

MOVSI,3000H

MOVDI,5000H

REPMOVSB

10.将附加段中4000H~5000H单元的内容全部清零:

CLD

MOVCX,1001H

MOVDI,4000H

MOVAL,0H

REPSTOSB

STD

11.设源串在1000H:

2000H开始的100个字节单元中,要求将源串送到3000H:

1020H开始的目的串中:

MOVAX,1000H

MOVSI,2000H

MOVAX,3000H

MOVES,AX

MOVDI,1020H

MOVCX,64H

12.比较两个串,发现有不同的字符时则停止比较:

MOVCX,100

MOVSI,2500H

MOVDI,1400H

REPECMPSB

13.按ESC键退出:

CMPAL,1BH

JEEXIT

.

EXIT:

MOVAH,4CH

INT21H

14.按任意键退出:

MOVAH,1H

JNEEXIT

MOVAH,4CH

INT21H

四.CPU各标志的含义

标志10

溢出标志OFOVNV溢出非溢出

方向标志DFDNUP递减递增

中断允许IFEIDI允许不允许

符号标志SFNGPL负的正的

零标志ZFZRNZ零非零

辅助进位AFACNA有进位无进位

奇偶校检PFPEPO偶数个计数个

进位标志CFCYNC有进位无进位

五.伪指令segment,assume,end,DB,DW,proc,PTR操作符

1.段定义:

段名segment

段名ends

2.段分配:

assume段寄存器:

段名[,段寄存器:

段名,…]

3.程序结束:

end[标号]

4.变量定义:

[变量名]DB/DW表达式或nDUP(操作数)

5.过程定义:

过程名proc属性

过程名endp

6.PTR运算符(可用来修改变量或标号的类型属性):

类型PTR表达式

六.8086CPU的内部结构组成及各寄存器的用法

1.内部结构:

执行单元EU和总线接口部件BIU

2.段寄存器用法:

A.通用数据寄存器:

AX,BX,CX,DX;

AX作为累加器,BX作为基址寄存器,CX作为计数寄存器,DX作为数据寄存器

B.指针及变址寄存器:

SP,BP,SI,DI;

通常用来存放存储器单元的16位偏移地址;

SP用来指示堆栈顶的偏移地址,称为堆栈指针;

BP用来存放堆栈中的一个数据区的“基址”的偏移量,称为基址指针;

SI,DI称为变址寄存器,用来存放当前数据所在存储单元的偏移地址,在串操作指令中,SI用来存放源操作数地址的偏移量,称为源变址寄存器,DI用来存放目标操作数地址的偏移量,称为目标变址寄存器。

C.段寄存器:

CS,DS,SS,ES

D.指令指针:

IP:

IP的内容总是指向BIU将要取的下一条指令代码的16位偏移地址

E.标志寄存器:

FR:

16位只是用9位;

其中6位为状态标志位,用来反映算术运算或逻辑运算结果的状态;

3位控制位,用来控制CPU的操作。

七.8086CPU的读写操作的理解

八.Debug命令

D命令

功能:

显示数据段中指定单元或单元块的内容。

E命令

修改内存单元内容

命令A

进行程序段汇编

命令U

从代码段中指定的位置对机器代码进行反汇编,得到相应的助记符形式的指令。

命令R

R

R命令就用来显示所有寄存器内容,包括标志寄存器中的8个状态标志位的状态,并在最后提示下一条将要执行的指令。

RAX

R后面跟上一个寄存器的名称,这时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:

数据寄存器,用来存放当前使用的数据段的段基址

3.ES:

附加段寄存器,用来存放当前使用的附加段的段基址

4.SS:

堆栈段寄存器,用来存放当期使用的堆栈段的段基址

一十三.堆栈及操作过

1.先进后出

2.入栈PUSHAX

PUSHBX

PUSHCX

PUSHF

出栈POPF

POPBX

POPAX

一十四.用一条逻辑指令将寄存器其他位清零,置1,取反

1.清零:

ANDd,0

2.置1:

ORd,1

3.取反:

XORd,1

一十五.指令的组成

1.[标号:

][前缀]助记符[操作数][;

注释]共四部分组成

一十六.DOS系统功能调用

1.1号功能:

键盘输入并显示

MOVAH,01H

INT21H

2.2号功能:

屏幕显示一个字符

MOVDL,‘字符’

MOVAH,02H

3.8号功能:

键盘输入但不显示输入字符

MOVAH,08H

4.9号功能:

屏幕显示字符串

MOVDX,字符串的偏移地址

MOVAH,09H

5.4CH功能:

返回DOS操作系统

MOVAH,4CH

一十七.BIOS调用

1.按任意键退出:

MOVAH,01H

INT16H

JNEEXIT

….

EXIT:

MOVAH,4CH

INT21H

一十八.奇存储体,偶寄存体

1.最后一位为奇则为奇存储体,偶则为偶存储体

一十九.子程序定义

1.定义:

过程名PROC属性(NEAR,FAR)

RET

过程名ENDP

2.调用:

CALL过程名

二十.编程

二十一.程序分析

二十二.I/O指令应用

1.IN:

输入指令:

IN累加器AX或AL,端口地址

INAL,08H

或MOVDX,2000H

INAX,DX

2.OUT:

输出指令:

OUT端口地址,累加器

OUT50H,AX

或MOVAL,68H

MOVDX,3000H

OUTDX,AL

或MOVAX,3A3BH

OUT20H,AX

二十三.指令系统

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1