江苏大学微机原理课程设计.docx

上传人:b****5 文档编号:12053405 上传时间:2023-04-16 格式:DOCX 页数:39 大小:96.04KB
下载 相关 举报
江苏大学微机原理课程设计.docx_第1页
第1页 / 共39页
江苏大学微机原理课程设计.docx_第2页
第2页 / 共39页
江苏大学微机原理课程设计.docx_第3页
第3页 / 共39页
江苏大学微机原理课程设计.docx_第4页
第4页 / 共39页
江苏大学微机原理课程设计.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

江苏大学微机原理课程设计.docx

《江苏大学微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《江苏大学微机原理课程设计.docx(39页珍藏版)》请在冰豆网上搜索。

江苏大学微机原理课程设计.docx

江苏大学微机原理课程设计

江苏大学

电气信息工程学院

微机原理课程设计

附件下载地址:

各个列程:

各题间的顺序我忘记了!

1、有条关于输入年、月、日的,程序如下:

DATASEGMENT

THEME1DB0DH,0AH,0DH,0AH,'=========WHATISTHEDATA(MM/DD/YY)?

========',0DH,0AH,'$'

THEME2DB'===PLEASEINPUTMONTH,DAY,YEAR(MM/DD/YY),ENDWITHEsc!

===',0DH,0AH,'$'

M_ERRORDB0DH,0AH,'!

!

MONTHERROR!

PLEASEINPUTAGAIN',0DH,0AH,'$'

D_ERRORDB0DH,0AH,'!

!

DAYERROR!

PLEASEINPUTAGAIN',0DH,0AH,'$'

ERRORDB0DH,0AH,'!

!

ERROR!

PLEASEINPUTAGAIN',0DH,0AH,'$'

POINTDB0DH,0AH,'THEDATAIS:

','$'

POINT_MDB0DH,0AH,'PLEASEINPUTTHENUMBEROFMONTH:

','$'

POINT_DDB0DH,0AH,'PLEASEINPUTTHENUMBEROFDAY:

','$'

POINT_YDB0DH,0AH,'PLEASEINPUTTHENUMBEROFYEAR:

','$'

BUFFDW4DUP(?

MARKDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,0

LEADX,THEME1

MOVAH,9

INT21H

MOVAH,02H

MOVDL,07H

INT21H

LEADX,THEME2

MOVAH,9

INT21H

JMPINPUT_M

NEW_M:

MOVAH,02H

MOVDL,07H

INT21H

MOVAH,9

LEADX,M_ERROR

INT21H

INPUT_M:

LEADX,POINT_M

MOVAH,9

INT21H

MOVMARK,0

CALLGETNUM

CMPMARK,1

JZNEW_M

MOVAX,BUFF[SI-1]

ANDAX,00FFH

CMPAX,0012H

JBEL1

DECSI

JMPNEW_M

L1:

CALLHuanHang

JMPINPUT_D

NEW_D:

MOVAH,02H

MOVDL,07H

INT21H

MOVAH,9

LEADX,D_ERROR

INT21H

INPUT_D:

LEADX,POINT_D

MOVAH,9

INT21H

MOVMARK,0

CALLGETNUM

CMPMARK,1

JZNEW_D

MOVAX,BUFF[SI-1]

ANDAX,00FFH

CMPAX,0031H

JBEL2

DECSI

JMPNEW_D

L2:

CALLHuanHang

INPUT_Y:

MOVAH,9

LEADX,POINT_Y

INT21H

MOVMARK,0

CALLGETNUM

CMPMARK,1

JZINPUT_Y

CALLHuanHang

LEADX,POINT

MOVAH,9

INT21H

MOVAX,BUFF[2]

CALLDISP4

MOVAH,02H

MOVDL,'-'

INT21H

MOVAX,BUFF[0]

CALLDISP2

MOVAH,02H

MOVDL,'-'

INT21H

MOVAX,BUFF[1]

CALLDISP2

CALLHuanHang

JMPSTART

 

DISP4PROCNEAR

PUSHAX

MOVAL,AH

CALLDISP2

POPAX

CALLDISP2

RET

DISP4ENDP

DISP2PROCNEAR

MOVBL,AL

MOVDL,BL

MOVCL,04

ROLDL,CL

ANDDL,0FH

CALLDISP1

MOVDL,BL

ANDDL,0FH

CALLDISP1

RET

DISP2ENDP

DISP1PROCNEAR

ADDDL,30H

CMPDL,3AH

JBDDD

ADDDL,27H

DDD:

MOVAH,02H

INT21H

RET

DISP1ENDP

GETNUMPROCNEAR

MOVDX,0

AGAIN:

MOVAH,01H

INT21H

CMPAL,1BH

JZEXIT

CMPAL,0DH

JZLP1

SUBAL,30H

CMPAL,0

JBLP2

CMPAL,9

JALP2

MOVCL,4

SHLDX,CL

XORAH,AH

ADDDX,AX

JMPAGAIN

LP1:

MOVAX,DX

MOVBUFF[SI],AX

INCSI

LP3:

RET

LP2:

LEADX,ERROR

MOVAH,9

INT21H

MOVMARK,1

CALLHuanHang

JMPLP3

RET

GETNUMENDP

HuanHangPROCNEAR

MOVAH,2

MOVDL,0DH

INT21

MOVAH,02H

MOVDL,0AH

INT21H

RET

HuanHangENDP

EXIT:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2、输入字符并显示的那题:

DATASEGMENT

TITTLEDB0DH,0AH,0DH,0AH,'<<======16--2CONVENTOR======>>',0DH,0AH,'!

PLEASEINPUT1<-->F!

',0DH,0AH,'QUITWITHEsc'0DH,0AH,'$'

MSG1DB0DH,0AH,'Hex:

','$'

MSG2DB0DH,0AH,'Binary:

','$'

BUFDB4DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,TITTLE

MOVAH,9

INT21H

LEADX,MSG1

;MOVAH,9

;INT21H

MOVCX,4

MOVSI,0

INPUT:

MOVAH,1;通过四次循环从键盘读入四位十六进制数

INT21H

CMPAL,1BH;Esc键的ASCII码

JZEXIT

MOVBUF[SI],AL

INCSI

LOOPINPUT

LEADX,MSG2

MOVAH,9

INT21H

MOVCX,4

MOVSI,0

NEXT:

MOVBL,BUF[SI]

CMPBL,39H

JBELP2;读入的字符<=9转向OK

SUBBL,7;读入字符>=9减7

LP2:

ANDBL,0FH

PUSHCX

MOVCL,4

SHLBL,CL;逻辑左移4位,低4位à高4位

MOVCX,4

LP1:

SHLBL,1;逻辑左移1位,最高位进入CF

MOVDL,30H

ADCDL,0;用到CF,转换为ASCII码

MOVAH,2

INT21H

LOOPLP1

POPCX

INCSI

LOOPNEXT

MOVAH,2

MOVDL,'B';显示二进制表示符'B'

INT21H

JMPSTART

EXIT:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3、小写字符转换为大写字符:

DATASEGMENT

DISPP1DB0AH,'__WrongWord!

PleaseInputAgain!

'0DH,0AH,'$'

DISPP2DB0DH,0AH,'$'

DISPP3DB'PleaseInputACharacter,EndWithEsc',0DH,0AH,'$'

BUFF1DB50DUP(?

);!

!

!

!

BUFF2DB50DUP(?

);!

!

!

!

DATAENDS

;代码段

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

LEASI,BUFF1

LEADI,BUFF2

L2:

LEADX,DISPP3

MOVAH,9;9号功能调用可实现将字符串在屏幕上显示出来,

INT21H;要求:

DS:

DX指向字符串地址的首址,并且字符串必须以‘$’为结束符

AGAIN:

MOVAH,1;1号功能,单个字符从键盘输入到AL寄存器,并在屏幕上显示出来

INT21H

;MOVBL,AL;暂存

;MOVDL,'_'

;MOVAH,02H

;INT21H

;MOVDL,'_';写与不写区别不大

;MOVAH,02H;2号功能调用,单个字符显示,把要显示的字符的ASCII码送DL寄存器

;INT21H

;MOVAL,BL;取出

MOV[SI],AL

INCSI

CMPAL,0DH

JZDISPLAY

CMPAL,1BH;Esc键的ASCII码

JZOVER

CMPAL,'a';CMP是比较指令,功能是目的操作数减去源操作数,但不送回相减的结果,只是使结果影响标志位

JBL1

CMPAL,'z'

JAL1

SUBAL,20H;小写字母向大写字母转换

MOV[DI],AL

INCDI

JMPAGAIN

;MOVAH,2;2号功能调用,单个字符显示,把要显示的字符的ASCII码送DL寄存器

;INT21H

;LEADX,DISPP2;回车并换行

;MOVAH,9;9号功能调用可实现将字符串在屏幕上显示出来,

;INT21H;要求:

DS:

DX指向字符串地址的首址,并且字符串必须以‘$’为结束符

;LEADX,DISPP2

;MOVAH,9

;INT21H

;JMPSTART;循环

L1:

LEADX,DISPP1;报错

MOVAH,9

INT21H

LEADX,DISPP2;回车并换行

MOVAH,9

INT21H

JMPL2

DISPLAY:

MOVBYTEPTR[DI],'$'

MOVBYTEPTR[SI],'$'

;LEADX,DISPP2;回车并换行

;MOVAH,9;9号功能调用可实现将字符串在屏幕上显示出来,

;INT21H

;LEADX,BUFF1

;MOVAH,9;9号功能调用可实现将字符串在屏幕上显示出来,

;INT21H;要求:

DS:

DX指向字符串地址的首址,并且字符串必须以‘$’为结束符

LEADX,DISPP2;回车并换行

MOVAH,9;9号功能调用可实现将字符串在屏幕上显示出来,

INT21H;要求:

DS:

DX指向字符串地址的首址,并且字符串必须以‘$’为结束符

;LEADX,DISPP2

MOVAH,9

INT21H

LEADX,BUFF2

MOVAH,9;9号功能调用可实现将字符串在屏幕上显示出来,

INT21H;要求:

DS:

DX指向字符串地址的首址,并且字符串必须以‘$’为结束符

LEADX,DISPP2;回车并换行

MOVAH,9;9号功能调用可实现将字符串在屏幕上显示出来,

INT21H;要求:

DS:

DX指向字符串地址的首址,并且字符串必须以‘$’为结束符

;LEADX,DISPP2

MOVAH,9

INT21H

JMPSTART;循环

OVER:

MOVAH,4CH;结束

INT21H

CODEENDS

ENDSTART

4、字符串匹配:

DATASEGMENT

STRING1DB250

DB?

DB250DUP(?

STRING2DB250

DB?

DB250DUP(?

YESDB0DH,0AH,'MATCH!

','$'

NODB0DH,0AH,'NOMATCH!

','$'

POINT1DB0DH,0AH,'PLEASEINPUTTHEFIRSTSTRING:

','$'

POINT2DB0DH,0AH,'PLEASEINPUTTHEFIRSTSTRING:

','$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEADX,POINT1

MOVAH,9

INT21H

LEADX,STRING1

MOVAH,0AH

INT21H

LEADX,POINT2

MOVAH,9

INT21H

LEADX,STRING2

MOVAH,0AH

INT21H

CLD

LEASI,STRING1

LEADI,STRING2

MOVCL,STRING1[1]

MOVCH,0

ADDSI,2

ADDDI,2

REPZCMPSB

JZYESS

LEADX,NO

MOVAH,9

INT21H

YESS:

LEADX,YES

MOVAH,9

INT21H

JMPSTART

CODEENDS

ENDSTART

5、好像有条关于字符、数据的题:

DATASEGMENT

DISP1DB0DH,0AH,'===INPUTSTRING,THEENDFLAGISCR(24H),QUITWITHCTRL-C===',0DH,0AH,0DH,0AH,'$'

DISP2DB0DH,0AH,'$';回车并换行

DISP3DB'PleaseInputTheNewString(TheNumberOfDatasInTheStringIs<10!

!

):

',0DH,0AH,'$'

DISP4DB'WhatTheStringIs:

','$'

DISP5DB'TheNumberOfDatasInTheStringIs:

','$'

BUFFDB200DUP(?

DATAENDS

;代码段

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDI,0;清指针

MOVCL,0;清计数器

LEADX,DISP1

MOVAH,9;9号功能调用,注意DX的值以及$

INT21H

LEADX,DISP3

MOVAH,9

INT21H

AGAIN:

MOVAH,01H;1号功能调用,单个字符输入到AL中

INT21H

CMPAL,0DH;AL中是回车吗?

JZDISPLAY

CMPAL,03H;Ctrl-C退出

JZEXIT

MOVBUFF[DI],AL;存入缓冲区

CMPAL,39H

JANEXT

LP1:

CMPAL,30H

JAELP2

JMPNEXT

LP2:

INCCL;计数器加1

NEXT:

INCDI

JMPAGAIN

DISPLAY:

ADDCL,30H

;MOVAL,CL

;MOVBUFF[DI+1],AL

MOVAL,0AH

MOVBUFF[DI+2],AL

MOVAL,'$'

MOVBUFF[DI+3],AL

LEADX,DISP2

MOVAH,9

INT21H

LEADX,DISP4

MOVAH,9

INT21H

LEADX,BUFF;MOVDX,OFFSETBUFF

;MOVAH,9

INT21H

LEADX,DISP2

;MOVAH,9

INT21H

MOVDX,OFFSETDISP5;LEADX,DISP5

MOVAH,9

INT21H

MOVDL,CL

MOVAH,2;2号功能调用

INT21H

LEADX,DISP2

MOVAH,9

INT21H

JMPSTART

EXIT:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

6、读文件的那题(好像是倒数第二题,记不清楚了):

DATASEGMENT

FILENDB21;文件名允许长度为20

DB?

;实际文件名长度

DB20DUP(?

);存新文件名

ERROPDB'Openfileerror!

',0AH,0DH,'$'

ERRRDDB'Readfileerror!

',0AH,0DH,'$'

INMSG1DB'Pleaseinputfilename:

',0AH,0DH,'$'

BUFINDB0F000HDUP(?

);输入缓冲区

EOFEQU1AH;文件结束符CTRL+Z

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,INMSG1;显示要求输入打开的文件名信息

MOVAH,09H;9号功能调用

INT21H

LEADX,FILEN;输入文件名

MOVAH,0AH;0A号功能调用可实现从键盘接收字符串到输入缓冲区;缓冲区第一个字节指出能容纳字符的最大个数,由用户设置;

INT21H;第二个字节存放实际输入的字符个数,由系统最后自动填入;从第三个字节开始存放从键盘输入的字符,知道Enter键结束

MOVBL,FILEN+1;取文件名长度

MOVBH,0;BX中装入文件名长度

MOVFILEN[BX+2],BYTEPTR0;文件名末尾添加0

LEADX,FILEN+2;指向文件名

MOVAL,0;以只读方式打开

MOVAH,3DH;3DH功能调用,打开文件

INT21H

JCOPERR;打开出错,转OPERR,CF=1则跳转

MOVBX,AX;转存文件号

RDFILE:

LEADX,BUFIN;DX指向缓冲区

MOVCX,50H;每次读80个字节

MOVAH,3FH;3F功能调用,读文件

INT21H

JCRDERR;CF=1则跳转,读出错,转RDERR

ORAX,AX;读入的字节数是否为0

JZCLFILE;若为AX为0,转CLFILE

MOVDL,0DH;输出回车

MOVAH,2;2号功能调用

INT21H

MOVDL,0AH;输出换行,准备显示文件内容

MOVAH,2;2号功能调用

INT21H

MOVSI,0

DISP0:

MOVAL,BUFIN[SI];从缓冲区送一个字节到AL

CMPAL,EOF;是否为文件结束符

JZCLFILE;若是,转CLFILE

MOVDL,AL;显示一个字符

MOVAH,2

INT21H

INCSI;指向下一个字节

LOOPDISP0

JMPRDFILE;再去读50H个字节

RDERR:

LEADX,ERRRD;显示读文件出错的信息

JMPDISP1

OPERR:

LEADX,ERROP;显示打开文件出错的信息

DISP1:

MOVAH,09H

INT21H

JMPENDO

CLFILE:

MOVAH,3EH;3EH功能调用,关闭文件

INT21H

ENDO:

MOVAH,4CH;退出

INT21H

CODEENDS

ENDSTART

7、响铃设计:

DATASEGMENT

DATA1DB'Inputnumber1-9,quitwithZero(0)',0DH,0AH,'$'

DISPP1DB0DH,0AH,'$';回车与换行

DISPP2DB'_Wrongnumber,pleaseinputagainorquitwithZero(0)',0DH,0AH,'$'

DATAENDS

;代码段

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

L2:

LEADX,DISPP1

MOVAH,9;9号功能调用可实现将字符串在屏幕上显示出来,

INT21H;要求:

DS:

DX指向字符串地址的首址,并且字符串必须以‘$’为结束符

LEADX,DATA1

MOVAH,9

INT21H

LEADX,DISPP1

MOVAH,9

INT21H

MOVAH,1;1号功能,单个字符从键盘输入到AL寄存器,并在屏幕上显示出来

INT21H

CMPAL,30H;CMP是比较指令,功能是目的操作数减去源操作数,但不送回相减的结果,只是使结果影响标志位

JBL1

CMPAL,39H

JAL1

ANDAL,0FH;取低四位

CMPAL,0

JEOVER

MOVCL,AL

L3:

MOVDL,07H;响

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

当前位置:首页 > 工程科技 > 能源化工

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

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