微机原理大作业.docx

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

微机原理大作业.docx

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

微机原理大作业.docx

微机原理大作业

汇编语言程序设计综合实验

学校:

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

学院:

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

班级:

*********

姓名:

******

学号:

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

指导教师:

******

一、实验目的

1.通过上机编程,熟悉汇编语言程序设计的流程。

2.通过编程实践,掌握常用的汇编程序设计方法与技巧。

3.学会汇编语言简单菜单程序的设计。

二、实验仪器

电脑一台

三、实验内容

利用汇编语言设计一个菜单程序,完成以下功能:

(1)小写字母变大写字母

(2)找最大值

(3)递增排序

(4)时间设置与显示

(5)结束程序运行

四、程序代码

STACKSEGMENTSTACK'STACK'

DW100HDUP(?

TOPLABELWORD

STACKENDS

DATASEGMENT

STRING1DB'1.LowercasetoUppercase',0DH,0AH,'$'

STRING2DB'2.FindtheMaximum',0DH,0AH,'$'

STRING3DB'3.Sort(AscendingOrder)',0DH,0AH,'$'

STRING4DB'4.TimeSettingsandDisplay',0DH,0AH,'$'

STRING5DB'5.Exit',0DH,0AH,'$'

STRING6DB'PleaseChoose:

','$'

STRING7DB'Pleaseinputthestring:

',0DH,0AH,'$'

STRING8DB'Themaximumis','$'

STRING9DB'Pleaseinputthenumbers:

',0DH,0AH,'$'

STRINGADB'Pleasesetthetime(HH:

MM:

SS)','$'

STRDECDB'DEC:

','$'

STRHEXDB'HEX:

','$'

TABLEDWG1,G2,G3,G4,G5;转移地址表

KEYLENDB20H,?

KEYBUFDB21HDUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

SETCURMACROROW,COLUMN,PAGE;设置光标宏指令

MOVAH,2;设置光标位置

MOVDH,ROW;行

MOVDL,COLUMN;列

MOVBH,PAGE;页

INT10H

ENDM

DISSTRMACROSTROFFSET;显示字符串宏指令

MOVAH,9

LEADX,STROFFSET

INT21H

ENDM

DISHMSMACROREG;显示时、分或秒宏指令

MOVAL,REG

MOVAH,0

MOVBL,10

DIVBL

MOVDL,AL

MOVBH,AH

ORDL,30H

MOVAH,2

INT21H

MOVDL,BH

ORDL,30H

MOVAH,2

INT21H

ENDM

START:

MOVAX,DATA;主程序初始化

MOVDS,AX

MOVES,AX

MOVAX,STACK

MOVSS,AX

LEASP,TOP

CALLDISMENU;显示菜单

CHOOSE:

SETCUR14,20,0

MOVAH,1;输入选项

INT21H

CMPAL,'1'

JBCHOOSE

CMPAL,'5'

JACHOOSE

ANDAL,0FH

DECAL

SHLAL,1

CBW

LEABX,TABLE

ADDBX,AX

JMPWORDPTR[BX]

EXIT:

MOVAH,4CH;终止进程

INT21H

CLEARMACRO;清屏宏指令

MOVAH,0;设置显示方式

MOVAL,1;40×25彩色方式

INT10H

ENDM

G1:

CLEAR

SETCUR0,0,0

DISSTRSTRING1

SETCUR1,0,0

DISSTRSTRING7

MOVAH,0AH;输入字符串

MOVDX,OFFSETKEYLEN

INT21H

MOVCL,KEYLEN+1

MOVCH,0

MOVSI,0

L11:

MOVAL,KEYBUF[SI]

CMPAL,'a'

JBL12

CMPAL,'z'

JAL12

ANDKEYBUF[SI],5FH

L12:

INCSI

LOOPL11

MOVKEYBUF[SI],'$'

SETCUR3,0,0

DISSTRKEYBUF

L13:

MOVAH,6;直接控制台I/O

MOVDL,0FFH

INT21H

JZL13

CMPAL,1BH;判断是否按下ESC键

JNZG1

JMPSTART

G2:

CLEAR

SETCUR0,0,0

DISSTRSTRING2

SETCUR1,0,0

DISSTRSTRING7

MOVAH,0AH;输入字符串

MOVDX,OFFSETKEYLEN

INT21H

MOVCL,KEYLEN+1

MOVCH,0

MOVDL,KEYBUF

MOVSI,1

L21:

CMPKEYBUF[SI],DL

JBEL22

MOVDL,KEYBUF[SI]

L22:

INCSI

CMPSI,CX

JNZL21

PUSHDX

SETCUR3,0,0

DISSTRSTRING8

POPDX

MOVAH,2;显示结果

INT21H

MOVAH,2;显示结果

MOVDL,'.'

INT21H

L23:

MOVAH,6;直接控制台I/O

MOVDL,0FFH

INT21H

JZL23

CMPAL,1BH;判断是否按下ESC键

JNZG2

JMPSTART

G3:

CLEAR

SETCUR0,0,0

DISSTRSTRING3

SETCUR1,0,0

DISSTRSTRING9

MOVDH,10

MOVBH,0;空格标志

MOVDI,0

L36:

MOVDL,0

L33:

MOVAH,1

INT21H

CMPAL,0DH;判断是否按下回车键

JZL31

CMPAL,20H;判断是否按下空格键

JZL32

MOVBH,0

ANDAL,0FH

MOVBL,AL

MOVAL,DL

MULDH

ADDAL,BL

MOVDL,AL

JMPL33

L32:

CMPBH,0

JNZL34

MOVKEYBUF[DI],DL

INCDI

L34:

MOVBH,1

JMPL36

L31:

CMPBH,0

JNZL35

MOVKEYBUF[DI],DL

INCDI

L35:

CALLSORT

SETCUR3,0,0

DISSTRSTRDEC

MOVSI,0

L3C:

MOVAL,KEYBUF[SI]

MOVCL,0;位数

CBW

CMPAX,0

JZL37

MOVBL,10

L39:

DIVBL

MOVDL,AH

MOVAH,0

ORDL,30H

MOVDH,0

PUSHDX

INCCL

CMPAX,0

JNZL39

MOVCH,0

L3A:

POPDX

MOVAH,2

INT21H

LOOPL3A

JMPL3B

L37:

MOVAH,2

MOVDL,'0'

INT21H

L3B:

MOVAH,2

MOVDL,20H

INT21H

INCSI

CMPSI,DI

JNZL3C

SETCUR4,0,0

DISSTRSTRHEX

MOVSI,0

L3D:

MOVDL,KEYBUF[SI]

MOVCL,4

SHRDL,CL

CMPDL,10

JBL3E

ADDDL,7

L3E:

ADDDL,30H

MOVAH,2

INT21H

MOVDL,KEYBUF[SI]

ANDDL,0FH

CMPDL,10

JBL3F

ADDDL,7

L3F:

ADDDL,30H

MOVAH,2

INT21H

MOVAH,2

MOVDL,20H

INT21H

INCSI

CMPSI,DI

JNZL3D

L38:

MOVAH,6;直接控制台I/O

MOVDL,0FFH

INT21H

JZL38

CMPAL,1BH;判断是否按下ESC键

JNZG3

JMPSTART

G4:

CLEAR

SETCUR0,0,0

DISSTRSTRING4

SETCUR2,0,0

DISSTRSTRINGA

MOVAH,0AH;输入时间字符串

MOVDX,OFFSETKEYLEN

INT21H

CMPKEYLEN+1,8

JNZG4

MOVBL,10

MOVAL,KEYBUF

ANDAL,0FH

MOVAH,0

MULBL

MOVCH,KEYBUF+1

ANDCH,0FH

ADDAL,CH

MOVCH,AL;设置“时”

MOVAL,KEYBUF+3

ANDAL,0FH

MOVAH,0

MULBL

MOVCL,KEYBUF+4

ANDCL,0FH

ADDAL,CL

MOVCL,AL;设置“分”

MOVAL,KEYBUF+6

ANDAL,0FH

MOVAH,0

MULBL

MOVDH,KEYBUF+7

ANDDH,0FH

ADDAL,DH

MOVDH,AL;设置“秒”

MOVDL,0;设置“百分之一秒”

MOVAH,2DH

INT21H;设置时间

CMPAL,0

JNZG4

L41:

SETCUR0,32,0

MOVAH,2CH

INT21H

PUSHDX

DISHMSCH;显示“时”

MOVAH,2

MOVDL,':

'

INT21H

DISHMSCL;显示“分”

MOVAH,2

MOVDL,':

'

INT21H

POPDX

DISHMSDH;显示“秒”

MOVAH,1

MOVCX,2000H

INT10H

MOVAH,6;直接控制台I/O

MOVDL,0FFH

INT21H

JZL41

CMPAL,1BH;判断是否按下ESC键

JNZG4

JMPSTART

G5:

JMPEXIT

DISMENUPROCNEAR;显示菜单子程序

CLEAR

SETCUR4,6,0

DISSTRSTRING1

SETCUR6,6,0

DISSTRSTRING2

SETCUR8,6,0

DISSTRSTRING3

SETCUR10,6,0

DISSTRSTRING4

SETCUR12,6,0

DISSTRSTRING5

SETCUR14,6,0

DISSTRSTRING6

RET

DISMENUENDP

SORTPROC

PUSHDI

DECDI

CMPDI,0

JZDONE

MOVAX,DI

MOVCH,AL

N2:

MOVCL,CH

LEASI,KEYBUF

MOVBL,0;交换标志

N1:

MOVAL,[SI]

CMPAL,[SI+1]

JBENOCHG

XCHGAL,[SI+1]

MOV[SI],AL

MOVBL,1

NOCHG:

INCSI

DECCL

JNZN1

CMPBL,0

JZDONE

DECCH

JNZN2

DONE:

POPDI

RET

SORTENDP

CODEENDS

ENDSTART

五、运行结果

1.主菜单

2.完成功能

(1)小写字母变大写字母

(2)找最大值

(3)递增排序

(4)时间设置与显示

(5)结束程序运行

六、实验总结

通过本次实验加深理解了汇编语言的指令含义与其中的基本概念;通过上机编程,熟悉汇编语言程序设计的流程,掌握常用的汇编程序设计方法与技巧,学会汇编语言简单菜单程序的设计。

同时,通过上机编程,复习巩固了所学汇编程序设计知识,能够应用汇编语言解决一些实际问题。

在本次实验中也遇到了程序设计方面的问题,通过查阅相关资料解决了这些问题。

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

当前位置:首页 > 经管营销 > 经济市场

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

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