微机原理实验报告.docx

上传人:b****6 文档编号:4723036 上传时间:2022-12-07 格式:DOCX 页数:20 大小:29.78KB
下载 相关 举报
微机原理实验报告.docx_第1页
第1页 / 共20页
微机原理实验报告.docx_第2页
第2页 / 共20页
微机原理实验报告.docx_第3页
第3页 / 共20页
微机原理实验报告.docx_第4页
第4页 / 共20页
微机原理实验报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

微机原理实验报告.docx

《微机原理实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告.docx(20页珍藏版)》请在冰豆网上搜索。

微机原理实验报告.docx

微机原理实验报告

实验一熟悉宏汇编程序及debug

一.实验目的

1.学习并掌握汇编语言指令寻址方式

2.熟悉在PC机上用DEBUG调试和运行汇编语言指令的过程。

二.实验内容

根据给定寄存器内容及存储单元内容,运行给定指令,观察记录运行结果。

三.给定的寄存器内容和存储单元内容及指令

1、给定的寄存器内容及存储单元内容如下:

(DS)=2000H,(SI)=0002H,(BX)=0100H

(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,

(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,

2、指令及其结果:

(1)MOVAX,1200H

(2)MOVAX,BX

(3)MOVAX,[1200H]

(4)MOVAX,[BX]

(5)MOVAX,1100H[BX]

(6)MOVAX,[BX][SI]

(7)MOVAX,1100H[BX][SI]

 

源操作数有效地址

源操作数物理地址

指令运行结果(AX)

1

 

 

 1200H

2

 

 

 0100H

3

 1200H

 21200H

 4C2AH

4

 0100H

 20100H

 3412H

5

 2300H

 22300H

 4C2AH

6

 1202H

 21202H

 7856H

7

 0202H

 20202H

65B7H

四.思考题

汇编语言的寻址方式有七种:

(1)立即寻址

(2)寄存器寻址:

用于该寻址的寄存器有:

AX、BX、CX、DX、SI、DI、SP、BP、AH、AL、BH、BL、CH、CL、DH、DL

(3)直接寻址

(4)寄存器间接寻址:

用于该寻址的寄存器有:

BX、BP、SI、DI

(5)寄存器相对寻址:

用于该寻址的寄存器有:

BX、BP、SI、DI

(6)基址变址寻址:

用于该寻址的寄存器有:

BX、BP、SI、DI

(7)相对基址变址寻址:

用于该寻址的寄存器有:

BX、BP、SI、DI

实验二寻址方式练习及多字节运算程序

一.实验目的

1.学习并掌握数据传送指令和算术运算指令

2.熟悉在PC机上编辑、汇编、连接、调试与运行汇编语言程序的过程。

二.实验内容

实现两个32位无符号数乘法。

实验程序如下:

my_datasegment

num1dw1200h,3400h

num2dw5600h,7800h

mutdw4dup(?

my_dataends

my_stacksegmentparastack‘stack’

db100(?

my_stackends

my_codesegment

assumecs:

my_codecs:

my_datacs:

my_stack

began:

pushds

movax,0

pushax

movax,my_data

movdx,ax

leabx,num1

mul32:

movax,[bx]

movsi,[bx+4]

movdi[bx+6]

mulsi

mov[bx+8],ax

movax,[bx+2]

mulsi

add[bx+0ah],ax

adc[bx+0ch],dx

movax,[bx]

muldi

add[bx+0ah],ax

adc[bx+0ch],dx

movah,4ch

int21h

my_codeends

endbegin

三,实验步骤

1.编辑源程序,建立一个以后缀名为.ASM的文件。

2.汇编源程序,检查程序是否有错误,有错时回到编辑状态,修改程序中错误行;无错误继续(3)。

3.连接目标程序,生成可执行程序。

4.DEBUG调试程序,记录如下数据:

(1)记录断点处地址,为:

0042h

(2)记录断点处DS、CS及IP的值分别为:

DS=129CH,CS=129DH,IP=0042H

(3)数据段DS:

0~DS:

0F的内容,并记录,如下:

0012003400560078-00000000e8196018

四.思考题

my_datasegment

ydw(?

xequ56abh

my_dataends

my_stacksegmentparastack‘stack’

db100(?

my_stackends

my_codesegment

assumecs:

my_codecs:

my_datacs:

my_stack

began:

pushds

movax,0

pushax

movax,my_data

movdx,ax

movax,x

mul6

addax,8h

movy,ax

movah,4ch

int21h

my_codeends

endbegin

实验三分支程序设计

一.实验目的

1.学习并掌握分支程序的设计方法

2.掌握正确分配与使用寄存器

二.实验内容

实现符号函数

三.程序清单

my_datasegment

xdw-5

ydw?

my_dataends

my_stacksegmentparastack‘stack’

db100dup(?

my_stackends

my_codesegment

assumeas:

my_code,ds:

my_data,ss:

my_sack

begin:

pushds

movax,0

pushax

movax,my_data

movds,ax

movax,x

andax,ax

jzzero

jnsplus

movbx,0ffffh

jmpdone

zero:

movbx,0

jmpdone

plus:

movbx,1

done:

movy,bx

movah,4ch

int21h

my_codeends

endbegin

四.实验步骤

1.汇编源程序,建立一个以后缀名为.ASM的文件

2.汇编源程序,检查程序是否有错误,有错时回到编辑状态,修改程序中错误行;无错误继续(3)。

3.连接目标程序,生成可执行程序。

4.DEBUG调试程序,记录如下数据:

(1)记录断点处地址。

(2)记录断点处DS、CS及IP的值。

(3)数据段DS:

0~DS:

0F的内容,并记录。

(4)修改X的值,观察并记录实验结果。

循环程序设计

一.实验目的

1.学习并掌握循环程序的设计方法

2.掌握正确分配与使用寄存器。

二.实验内容

用冒泡法将一个带符号字节型数组中的数据按从大到小的顺序排列。

三.程序清单

my_datasegment

buffdb11h,22h,33h,44h,55h,-30h,66h,77h

countequ$-buff

my_dataends

my_stacksegmentparastack‘stack’

db100dup(?

my_stackends

my_codesegment

assumecs:

my_code,ds:

my_data,ss:

my_stack

begin:

pushds

movax,0

pushax

movax,my_data

movds,ax

movcx,count-1

loop1:

movdx,cx

movsi,0

loop2:

moval,buff[si]

cmpal,buff[si+1]

jgedone

xchgal,buff[si+1]

movbuff[si],al

done:

incsi

looploop2

movcx,dx

looploop1

movah,4ch

int21h

my_codeends

endbegin

四.实验步骤

1.编辑源程序,建立一个以后缀名为.ASM的文件。

2.汇编源程序,检查程序是否有错误,有错时回到编辑状态,修改程序中错误行;无错误继续(3)。

3.连接目标程序,生成可执行程序。

4.DEBUG调试程序,记录如下数据:

(1)记录断点处地址。

 

(2)记录断点处DS、CS及IP的值。

 (3)数据段DS:

0~DS:

0F的内容,并记录。

(4)修改源程序,把数据改为从小到大排序,观察并记录实验结果。

修改后的程序为:

my_datasegment

buffdb11h,22h,33h,44h,55h,-30h,66h,77h

countequ$-buff

my_dataends

my_stacksegmentparastack‘stack’

db100dup(?

my_stackends

my_codesegment

assumecs:

my_code,ds:

my_data,ss:

my_stack

begin:

pushds

movax,0

pushax

movax,my_data

movds,ax

movcx,count-1

loop1:

movdx,cx

movsi,0

loop2:

moval,buff[si]

cmpal,buff[si+1]

jledone

xchgal,buff[si+1]

movbuff[si],al

done:

incsi

looploop2

movcx,dx

looploop1

movah,4ch

int21h

my_codeends

endbegin

    (5)修改源程序,把排好序的数据保存在原数据的后面存储区中。

观察并记录实验结果。

修改后的程序为:

my_datasegment

buffdb11h,22h,33h,44h,55h,-30h,66h,77h

countequ$-buff

my_dataends

my_stacksegmentparastack‘stack’

db100dup(?

my_stackends

my_codesegment

assumecs:

my_code,ds:

my_data,ss:

my_stack

begin:

pushds

movax,0

pushax

movax,my_data

movds,ax

movsi,0

movcx,count

loop0:

mova,buff[si]

movbuff[si+8],al

incsi

looploop0

loop1:

movdx,cx

movsi,0

loop2:

moval,buff[si]

cmpal,buff[si+1]

jgedone

xchgal,buff[si+1]

movbuff[si],al

done:

incsi

looploop2

movcx,dx

looploop1

movah,4ch

int21h

my_codeends

endbegin

    (6)修改源程序,利用DOS功能调用把排好序的数据显示在屏幕上,观察并记录实验结果。

(选作)

六.思考题

1、分析源程序,利用子程序实现上述问题。

2、已知从数据段BUF单元开始存放15个字节型数据,请设计程序将其中负数和零分别送往MINUS和ZERO开始的存储器单元。

(必做)

8255并行接口实验

(一)

一.实验目的

(1)掌握8255的基本工作方式及其应用。

(2)掌握8255的典型应用电路接法。

二.实验内容

基本输入输出实验。

8255端口地址为0E460H-0E463H。

三.实验步骤

1.接ISA仿真总线。

 2.接8255数据、控制、A口及B口线。

A口连8个LED,B口连8个开关K。

 3.编写程序,从B口输入数据并从A口输出,执行程序,观察结果。

按动开关,观察灯的亮灭情况。

四.实验程序

MY8255_A       EQU 0E460H

MY8255_B       EQU 0E461H

MY8255_C       EQU 0E462H

MY8255_MODE EQU 0E463H

CODE        SEGMENT

             ASSUMECS:

CODE 

START:

               MOVAL,82H                     

                               MOVDX,MY_8255_MODE   

                                OUTDX,AL                      

A1:

                        MOVDX,MY_8255_B 

                                 INAL,DX                     

                                  MOVDX,MY_8255_A  

                    OUTDX,AL                                  

                  CALL    BREAK

                  JMP       A1

BREAK       PROC    NEAR

                  MOV     AH,06H

                  MOV     DL,0FFH

                  INT       21H

                  JE       RETURN

                  MOV   AX,4C00H

                  INT      21H

RETURN:

    RET

BREAK       ENDP 

CODE         ENDS

                    END      START

五.实验思考题

修改程序,要求从C口输入数据并从B口输出。

MY8255_A       EQU 0E460H

MY8255_B       EQU 0E461H

MY8255_C       EQU 0E462H

MY8255_MODE EQU 0E463H

CODE        SEGMENT

             ASSUMECS:

CODE 

START:

  MOVAL,89H

MOVDX,MY_8255_MODE

OUTDX,AL

A1:

        MOVDX,MY_8255_B

INAL,DX

MOVDX,MY_8255_A

OUTDX,AL

CALL    BREAK

JMP       A1

BREAK       PROC    NEAR

                  MOV     AH,06H

                  MOV     DL,0FFH

                  INT       21H

                  JE       RETURN

                  MOV   AX,4C00H

                  INT      21H

RETURN:

    RET

BREAK       ENDP 

CODE         ENDS

                    END      START

8255并行接口实验

(一)

一.实验目的

(1)掌握8255的基本工作方式及其应用。

(2)掌握8255的典型应用电路接法。

二.实验内容

基本输入输出实验,8255端口地址为0E460H-0E463H。

实验程序如下:

MY8255_A       EQU 0E460H

MY8255_B       EQU 0E461H

MY8255_C       EQU 0E462H

MY8255_MODE EQU 0E463H

CODE        SEGMENT

             ASSUMECS:

CODE 

START:

               MOVAL,82H                     

                               MOVDX,MY_8255_MODE   

                                OUTDX,AL                      

A1:

                        MOVDX,MY_8255_B 

                                 INAL,DX                     

                                  MOVDX,MY_8255_A  

                    OUTDX,AL                                  

                  CALL    BREAK

                  JMP       A1

BREAK       PROC    NEAR

                  MOV     AH,06H

                  MOV     DL,0FFH

                  INT       21H

                  JE       RETURN

                  MOV   AX,4C00H

                  INT      21H

RETURN:

    RET

BREAK       ENDP 

CODE         ENDS

                    END      START

三.实验步骤

1.接ISA仿真总线。

 2.接8255数据、控制、A口及B口线。

A口连8个LED,B口连8个开关K。

 3.编写程序,从B口输入数据并从A口输出,执行程序,观察结果。

按动开关,观察灯的亮灭情况。

五.实验思考题

修改程序,要求从C口输入数据并从B口输出。

MY8255_A       EQU 0E460H

MY8255_B       EQU 0E461H

MY8255_C       EQU 0E462H

MY8255_MODE EQU 0E463H

CODE        SEGMENT

             ASSUMECS:

CODE 

START:

  MOVAL,89H

MOVDX,MY_8255_MODE

OUTDX,AL

A1:

        MOVDX,MY_8255_B

INAL,DX

MOVDX,MY_8255_A

OUTDX,AL

CALL    BREAK

JMP       A1

BREAK       PROC    NEAR

                  MOV     AH,06H

                  MOV     DL,0FFH

                  INT       21H

                  JE       RETURN

                  MOV   AX,4C00H

                  INT      21H

RETURN:

    RET

BREAK       ENDP 

CODE         ENDS

8255并行接口实验

(二)

一 实验目的

(1)掌握8255的各种工作方式及其应用。

(2)掌握8255的典型应用电路接法。

二.实验内容

流水灯显示实验。

8255端口地址为0E460H-0E463H。

三.实验步骤

1.在实验五的基础上,B口也连8个LED,让16个LED顺序亮灭。

修改程序,并添加延时子程序。

(提示:

首先分别向A口和B口写入7FH和FEH,然后分别将该数右移和左移一位,再送到端口上,循环下去,从而实现流水灯的显示。

2.利用C口,连接三个开关,实现灯亮的开始、暂停、停止、复位等功能。

MY8255_AEQU0E460H

MY8255_BEQU0E461H

MY8255_CEQU0E462H

MY8255_MODEEQU0E463H

DATASEGMENT

LADB?

LBDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MovDX,MY8255_MODE

MOVAL,80H

OUTDX,,AL

MOVDX,MY8255_A

MOVAL,7FH

OUTDX,AL

MOVLA,AL

MOVDX,MY8255_B

MOVAL,0FEH

OUTDX,AL

MOVLB,AL

CALLDELAY

A1:

MOVAL,LA

RORAL,1

MOVLA,AL

MOVDX,MY8255_A

OUTDX,AL

MOVAL,LB

ROLAL,1

MOVLB,AL

MOVDX,MY8255_B

OUTDX,AL

CALLDALLY

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

当前位置:首页 > 高中教育 > 理化生

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

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