微机原理实验.docx

上传人:b****5 文档编号:6204862 上传时间:2023-01-04 格式:DOCX 页数:13 大小:127.15KB
下载 相关 举报
微机原理实验.docx_第1页
第1页 / 共13页
微机原理实验.docx_第2页
第2页 / 共13页
微机原理实验.docx_第3页
第3页 / 共13页
微机原理实验.docx_第4页
第4页 / 共13页
微机原理实验.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

微机原理实验.docx

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

微机原理实验.docx

微机原理实验

 

微机实验报告

信息82

陈赞

08055087

 

一、显示程序实验

1.1实验目的

(1)掌握在PC机上以十六进制数形式显示数据的方法。

掌握部分DOS功能调用的使

用方法。

(2)掌握分支程序及子程序的设计方法。

1.2实验设备

PC机一台。

1.3实验内容及说明

计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU一般

均用二进制数进行计算或用其他信息进行处理,处理结果又必须依照外设的要求变为

ASCII码、BCD码或七段显示码等。

因此,在应用软件中,各类数制的转换和代码的转换

是必不可少的。

1.4实验步骤

(1)运行QTHPCI软件,根据实验内容编写程序。

(2)使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。

(3)“调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输

指令执行后各寄存器及数据区的内容。

按F9连续运行。

(4)更改数据区的数据,考察程序的正确性。

1.5程序原代码

DATASEGMENT

MESDB'Showaashex:

',0AH,0DH,'$'

SDDB'a'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

start:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMES;showmessage

MOVAH,09H

INT21H

MOVSI,OFFSETSD

MOVAL,DS:

[SI]

ANDAL,0F0H;取高4位

MOVCL,4

SHRAL,CL

CMPAL,0AH;是否是A以上的数

JBC2

ADDAL,07H

C2:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

MOVAL,DS:

[SI]

ANDAL,0FH;取低4位

CMPAL,0AH

JBC3

ADDAL,07H

C3:

ADDAL,30H

MOVDL,AL;showcharacter

MOVAH,02H

INT21H

MOVAX,4C00H;gobacktodos

INT21H

CODEENDS

endstart

1.6试验结果附图

1.7显示程序流程

二、求和程序设计实验

2.1实验目的

(1)掌握使用运算类指令编程及调试方法。

(2)掌握运算类指令对各状态标志位的影响及其测试方法。

2.2实验设备

PC机一台。

2.3实验内容及说明

二进制双精度加法运算.计算Z=X+Y。

按提示输入数据,在屏幕显示的运行结果中查看结果是否正确。

修改X、Y的值,可

得到不同的结果。

2.4实验步骤

(1)运行QTHPCI软件,根据实验内容编写程序。

(2)使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连

接。

(3)“调试”菜单中的“进入调试器”命令进入Debug调试,F9运行程序。

(4)按提示输入数据,在屏幕显示的运行结果中查看结果是否正确。

修改X、Y的值,

可得到不同的结果。

2.5实验程序

*---------------------------------------------------------------*

*运算类指令编程实验*

*按提示输入数据*

*运行程序,在屏幕显示的运行结果中查看求和结果是否正确*

*因为用到键盘输入,不要在此窗口直接运行,而是到TD调试器里运行*

*---------------------------------------------------------------*

STACK1SEGMENTSTACK

DW64DUP(?

STACK1ENDS

DATASEGMENT

XLDW?

;请在此处给X低位赋值

XHDW?

;请在此处给X高位赋值

YLDW?

;请在此处给Y低位赋值

YHDW?

;请在此处给Y高位赋值

ZLDD?

ZHDD?

SIGNDB0;是否结束输入数据处理标记

sign0DB0;是否出错

BUFDB100;字符缓冲区

DB?

DB100DUP(0)

ARRDD2DUP(0)

inputDB0ah,0dh,'computeZ=X+Y,thenoutputtheresult'

DB0AH,0DH,'ifyouwanttoquitpleasepress...q/Q...'

dB0ah,0dh,'pressotherkeytoinputx,y',0ah,0dh,'$'

outputdb0ah,0dh,'z=x+y=$'

BUF1DB10DUP(0)

BUF0DB10DUP(0)

overdb'overflowerror!

$'

datdw0ah

ERROR_MESSDB'INPUTERROR,PLEASEINPUTAGAIN',0AH,0DH,'$'

input1db'pleaseinputx,y(0~65535)',0ah,0dh,'X=$'

input2db0AH,0DH,'y=$'

ndb?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

L0:

LEADX,INPUT;输入提示

MOVAH,9

INT21H

MOVAH,08h

INT21h

CMPAL,'Q'

JEexit

CMPAL,'q'

JEexit

LEABX,WORDPTRxl

MOVSIGN,0

MOVSIGN0,0

LEADX,input1

MOVAH,9

INT21h

reinput:

LEADX,BUF

MOVAH,10

INT21H

LEADI,BUF+2;开始处理输入的数据

L1:

LEASI,BUF0

MOVCX,0

L2:

MOVDL,[DI]

INCDI

CMPDL,0DH

JNEAA

ADDSIGN,1

JMPA0

AA:

MOV[SI],DL

INCSI

INCCX

JMPL2

A0:

LEASI,BUF0

MOVBP,CX

CALLF10T2

CMPsign0,-1

JEet

MOV[BX],AX

ADDBX,2

MOV[BX],DX

ADDBX,2

a1:

CMPsign,2

JEend0

LEADX,input2

MOVAH,9

INT21h

JMPreinput

exit:

MOVAH,4CH

INT21H

et:

LEADX,error_mess;出错提示

MOVAH,9

INT21h

JMPL0

END0:

MOVAX,XL;X的低位送AX

ADDAX,YL;X的低位加Y的低位

MOVZL,AX;存低位和

MOVAX,XH;X的高位送AX

ADCAX,YH;X的高位加Y的高位,同时加上CF

JNCNEXT1

LEADX,OVER

MOVAH,9

INT21H

JMPL0

NEXT1:

LEADX,OUTPUT;输出结果

MOVAH,9

INT21H

MOVAX,zh

ORAX,AX

JNZet

MOVAX,zl

CALLF2T10

JMPL0

*************************************

十进制转化为二进制子程序*

入口参数SI--要转化的字符串首址*

CX--十进制位数*

出口参数AL--转化为的二进制数*

************************************

F10T2PROC

PUSHBX

MOVAx,0

MOVSIGN0,0

MOVBL,[SI]

CMPBL,'+'

JZm

CMPBL,'-'

JNZNEXT3

MOVSIGN0,1

m:

DECCX

NEXT4:

INCSI

MOVBL,[SI]

NEXT3:

CMPBL,30H

JBD1

CMPbl,39h

JAd1

SUBbl,30h

MOVbh,BYTEPTR0

muldat

ADDAL,bl

JCd1

DECcx

JNEnext4

CMPsign0,1

JNEqq

NEGax

QQ:

CWD

POPbx

RET

d1:

MOVsign,-1

JMPqq

f10t2ENDP

*************************************

二进制转化为十进制子程序*

入口参数AL--要转化的二进制数据*

*

出口参数BUF--存放转化为的*

十进制字符串*

*************************************

F2T10PROC

PUSHBX

PUSHDX

PUSHSI

PUSHAX

LEASI,BUF

ORAL,AL

JNSPLUS

NEGAL

MOV[SI],BYTEPTR'-'

INCSI

PLUS:

MOVAH,0

MOVBX,10

CALLRADIX1

MOV[SI],BYTEPTR'$'

MOVDX,OFFSETBUF

MOVAH,9

INT21H

POPAX

POPSI

POPDX

POPBX

RET

F2T10ENDP

*************************************

进制转换处理程序*

入口参数AX--要转化的二进制数据*

BX--要转换成BX进制的数据*

出口参数*

*

*************************************

RADIX1PROC

PUSHCX

PUSHDX

MOVCX,0

LOP1:

MOVDX,0

DIVBX

PUSHDX

INCCX

ORAX,AX

JNELOP1

LOP2:

POPAX

CMPAL,10

JBL11

ADDAL,7

L11:

ADDAL,30H

MOV[SI],AL

INCSI

DECCX

JNELOP2

POPDX

POPCX

RET

RADIX1ENDP

CODEENDS

ENDSTART

2.6试验结果附图

 

2.7求和程序设计实验主程序流程图

三、实验总结

第一个试验只须改动预先设置的数据区的数据即可。

第二个加法器的实验,原程序只能实现8位加法,结果范围只能在-128到127之间;需要将结果范围修正到-32768~32767。

因此需要修改数据范围,此外,将F2T10子程序中的AL修改为AX,从而避免溢出,造成错误的结果。

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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