微型计算机原理实验.docx

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

微型计算机原理实验.docx

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

微型计算机原理实验.docx

微型计算机原理实验

实验一:

输出字符‘A’的源程序如下:

PROGSEGMENT

ASSUMECS:

PROG

START:

MOVDL,'A'

MOVAH,2

INT21H

MOVAH,4CH

INT21H

PROGENDS

ENDSTART

实验二:

1.把BX中的二进制数转换成十进制数,在屏幕上显示出来,只考虑无符号数。

程序如下:

CODESEGMENT

ASSUMECS:

CODE

START:

MOVBX,0FFFH

MOVCX,10000

CALLDEC_DIV

MOVCX,1000

CALLDEC_DIV

MOVCX,100

CALLDEC_DIV

MOVCX,10

CALLDEC_DIV

MOVCX,1

CALLDEC_DIV

MOVAH,4CH

INT21H

DEC_DIVPROCNEAR

MOVAX,BX

MOVDX,0

DIVCX

MOVBX,DX

MOVDL,AL

ADDDL,30H

MOVAH,2

INT21H

RET

DEC_DIVENDP

CODEENDS

ENDSTART

2.把BX中的带符号数转换成十进制数,在屏幕上显示出来。

程序如下:

CODESEGMENT

ASSUMECS:

CODE

START:

MOVBX,8001H

MOVAX,8000H

ANDAX,BX

JNZMINUS

JMPDISP

MINUS:

MOVDL,'-'

MOVAH,2

INT21H

NEGBX

JMPDISP

DISP:

MOVCX,10000

CALLDEC_DIV

MOVCX,1000

CALLDEC_DIV

MOVCX,100

CALLDEC_DIV

MOVCX,10

CALLDEC_DIV

MOVCX,1

CALLDEC_DIV

MOVAH,4CH

INT21H

DEC_DIVPROCNEAR

MOVAX,BX

MOVDX,0

DIVCX

MOVBX,DX

MOVDL,AL

ADDDL,30H

MOVAH,2

INT21H

RET

DEC_DIVENDP

CODEENDS

ENDSTART

3.求一个数据块(由10个单字节的无符号数组成)中的最大元素,并将结果在屏幕上显示出来,程序如下:

DATASEGMENT

BLOCKDB1,0,5,7,10,30,100,127,90,80

RESULTDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

BEGINPROCFAR

MOVAX,DATA

MOVDS,AX

MOVCX,9

LEASI,BLOCK

MOVAL,[SI]

X1:

INCSI

CMPAL,[SI]

JAEX2

MOVAL,[SI]

X2:

LOOPX1

MOVRESULT,AL

MOVAH,0

MOVBX,AX

CALLXIANSHI

MOVAH,4CH

INT21H

BEGINENDP

XIANSHIPROCNEAR

MOVAL,80H

ANDAL,BL

JNZMINUS

JMPDISP

MINUS:

MOVDL,'-'

MOVAH,2

INT21H

NEGBL

JMPDISP

DISP:

MOVCX,100

CALLDEC_DIV

MOVCX,10

CALLDEC_DIV

MOVCX,1

CALLDEC_DIV

MOVAH,4CH

INT21H

XIANSHIENDP

DEC_DIVPROCNEAR

MOVAX,BX

MOVDL,0

DIVCL

MOVBL,AH

MOVBH,0

MOVDL,AL

ADDDL,30H

MOVAH,2

INT21H

RET

DEC_DIVENDP

CODEENDS

ENDBEGIN

4.求一个数据块(由20个单字节的带符号数组成)中的正数和(≤字)和负数和(≤字),并在屏幕上用十进制的形式显示出两个和。

程序如下:

DATASEGMENT

BLOCKDW-100,100,200,-200,5,6,7,8,9,10

DW11,12,13,14,15,50,-50,150,-150,-200

POSITDW?

NEGATDW?

ST1DB'Thesumofallthepositivenumbers:

$'

ST2DB'Thesumofthenegativenumbers:

$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROC

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETBLOCK

MOVSI,0

MOVDI,0

MOVCX,20

X1:

MOVAX,[BX]

CMPAX,0

JGEX3

ADDDI,AX

JMPX2

X3:

ADDSI,AX

X2:

ADDBX,2

LOOPX1

MOVPOSIT,SI

MOVNEGAT,DI

MOVBX,SI

MOVDX,OFFSETST1

MOVAH,9

INT21H

CALLXIANSHI

MOVDL,0DH

MOVAH,2

INT21H

MOVDL,0AH

MOVAH,2

INT21H

MOVBX,NEGAT

NEGBX

ANDBX,7FFFH

MOVDX,OFFSETST2

MOVAH,9

INT21H

MOVDL,'-'

MOVAH,2

INT21H

CALLXIANSHI

MOVAH,4CH

INT21H

STARTENDP

XIANSHIPROCNEAR

MOVCX,100

CALLDEC_DIV

MOVCX,10

CALLDEC_DIV

MOVCX,1

CALLDEC_DIV

RET

XIANSHIENDP

DEC_DIVPROCNEAR

MOVAX,BX

MOVDX,0

DIVCX

MOVBX,DX

MOVDL,AL

ADDDL,30H

MOVAH,2

INT21H

RET

DEC_DIVENDP

CODEENDS

ENDSTART

5.将寄存器BX中的二进制数转换成十六进制数并在屏幕上显示出来。

程序如下:

CODESEGMENT

ASSUMECS:

CODE

BINHEXPROCFAR

MOVCH,4

MOVBX,1000

ROTATE:

MOVCL,4

ROLBX,CL

MOVDL,BL

ANDDL,0FH

ADDDL,30H

CMPDL,3AH

JLOUTPUT

ADDDL,7

OUTPUT:

MOVAH,2

INT21H

DECCH

JNEROTATE

MOVDL,'H'

MOVAH,2

INT21H

MOVAH,4CH

INT21H

BINHEXENDP

CODEENDS

ENDBINHEX

实验三:

1.从键盘上输入一个十进制数(0~65535),转换成二进制数并放入寄存器BX中,其程序框图如下:

程序如下:

CODESEGMENT

ASSUMECS:

CODE

STARTPROC

CALLDECBIN

CALLXIANSHI

MOVAH,4CH

INT21H

STARTENDP

DECBINPROCNEAR

MOVCX,10

MOVBX,0

LOP1:

MOVAH,1

INT21H

CMPAL,30H

JLEXIT

CMPAL,39H

JGEXIT

SUBAL,30H

MOVAH,00H

XCHGAX,BX

MULCX

ADDBX,AX

JMPLOP1

EXIT:

RET

DECBINENDP

XIANSHIPROCNEAR

LP1:

MOVCX,10000

CALLDEC_DIV

MOVCX,1000

CALLDEC_DIV

MOVCX,100

CALLDEC_DIV

MOVCX,10

CALLDEC_DIV

MOVCX,1

CALLDEC_DIV

RET

XIANSHIENDP

DEC_DIVPROCNEAR

MOVAX,BX

MOVDX,0

DIVCX

MOVBX,DX

MOVDL,AL

ADDDL,30H

MOVAH,2

INT21H

RET

DEC_DIVENDP

CODEENDS

ENDSTART

2.从键盘上输入0~65535范围的一个十进制数,在屏幕上显示出相应的十六进制数。

程序如下:

CODESEGMENT

ASSUMECS:

CODE

STARTPROC

CALLDECBIN

MOVCH,4

CALLROTATE

MOVAH,4CH

INT21H

STARTENDP

DECBINPROCNEAR

MOVCX,10

MOVBX,0

LOP1:

MOVAH,1

INT21H

CMPAL,30H

JLEXIT

CMPAL,39H

JGEXIT

SUBAL,30H

MOVAH,00H

XCHGAX,BX

MULCX

ADDBX,AX

JMPLOP1

EXIT:

RET

DECBINENDP

ROTATEPROC

LOP2:

MOVCL,4

ROLBX,CL

MOVDL,BL

ANDDL,0FH

ADDDL,30H

CMPDL,3AH

JLOUTPUT

ADDDL,7

OUTPUT:

MOVAH,2

INT21H

DECCH

JNELOP2

MOVDL,'H'

MOVAH,2

INT21H

MOVAH,4CH

INT21H

ROTATEENDP

CODEENDS

ENDSTART

实验四:

1.在内存中存有一字符串,以0为结尾,程序开始输出‘HELLO’然后等待从键盘输入一字符,再改字符串中寻找该字符,若找到,输出‘yes’;若找不到,输出‘no’,然后再输入下一字符。

程序如下:

DATASEGMENT

STR1DB'HELLO',0DH,0AH,'$'

STR2DB20H,'YES',0DH,0AH,'$'

STR3DB20H,'NO',0DH,0AH,'$'

STR4DB'123045ABa=!

?

',00H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETSTR1

MOVAH,9

INT21H

LOOP1:

MOVAH,1

INT21H

MOVBX,OFFSETSTR4

GON:

MOVAH,[BX]

CMPAH,0

JZNO

INCBX

CMPAH,AL

JNZGON

MOVDX,OFFSETSTR2

GO:

MOVAH,9

INT21H

JMPLOOP1

NO:

MOVDX,OFFSETSTR3

JMPGO

STARTENDP

CODEENDS

ENDSTART

2.实验内容1的程序是个无限循环程序,若按‘ESC’键,让程序退出循环,是系统返回DOS。

已知‘ESC’键的键值是1BH,按照上面要求对实验内容1的程序进行修改,然后重新汇编、链接和运行。

程序如下:

DATASEGMENT

STR1DB'HELLO',0DH,0AH,'$'

STR2DB20H,'YES',0DH,0AH,'$'

STR3DB20H,'NO',0DH,0AH,'$'

STR4DB'123045ABa=!

?

',00H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETSTR1

MOVAH,9

INT21H

LOOP1:

MOVAH,1

INT21H

MOVBX,OFFSETSTR4

GON:

MOVAH,[BX]

CMPAH,0

JZNO

INCBX

CMPAH,AL

JNZGON

MOVDX,OFFSETSTR2

GO:

MOVAH,9

INT21H

JMPLOOP1

NO:

MOVDX,OFFSETSTR3

JMPGO

STARTENDP

CODEENDS

ENDSTART

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

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

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

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