中南大学微机原理实验代码软件部分.docx
- 文档编号:3002757
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:25
- 大小:19.51KB
中南大学微机原理实验代码软件部分.docx
《中南大学微机原理实验代码软件部分.docx》由会员分享,可在线阅读,更多相关《中南大学微机原理实验代码软件部分.docx(25页珍藏版)》请在冰豆网上搜索。
中南大学微机原理实验代码软件部分
LESSON1-3
STACK1SEGMENT
ST1DB20DUP('?
')
STACK1ENDS
DATASEGMENT
D1DB'Pleaseinputstrings:
$'
D2DB0DH,0AH,'TheASCIIoftheorderedstringsis:
$'
BUFFDB100
DB'?
'
DB100DUP('?
')
DATAENDS
EXTRASEGMENT
E1DB20DUP('?
')
EXTRAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1,ES:
EXTRA
;MAINPROCFAR
START:
MOVAX,DATA;init
MOVDS,AX
MOVAX,STACK1
MOVSS,AX
MOVSP,OFFSETST1
MOVAX,OFFSETEXTRA
MOVES,AX
MOVDX,OFFSETD1;显示提示输入信息
MOVAH,9
INT21H
MOVDX,OFFSETBUFF;键盘输入字符串,存入附加段
MOVAH,0AH
INT21H
MOVBX,DX;将输入字符相对于数据段的偏移地址地址存入附加段前两个字节,同时将输入字符的数量存入附加段后两个字节
SUBCH,CH
MOVCL,[BX+1]
;PUSHCX
ADDDX,2
MOVDI,OFFSETE1
MOVES:
[DI],DX
MOVES:
[DI+2],CX
C1:
MOVDX,OFFSETD2;显示相应信息
MOVAH,9
INT21H
MOVDI,OFFSETE1;从附加段取出输入字符串在代码段的偏移地址
MOVBX,ES:
[DI]
MOVAX,[BX];从代码段取出第一个字符
ANDAL,0F0H;取高4位
MOVCL,4
SHRAL,CL
CMPAL,0AH;是否是A以上的数
JBC2
ADDAL,07H
C2:
ADDAL,30H
MOVDL,AL;显示高位ASCII
MOVAH,02H
INT21H
MOVDI,OFFSETE1;再次从附加段取出输入字符串在代码段的偏移地址
MOVBX,ES:
[DI]
MOVAX,[BX];再次从代码段取出第一个字符
ANDAL,0FH;取低4位
CMPAL,0AH
JBC3
ADDAL,07H
C3:
ADDAL,30H
MOVDL,AL;显示低位ASCII
MOVAH,02H
INT21H
MOVDI,OFFSETE1;从附加段取出输入字符串在代码段的偏移地址
MOVBX,ES:
[DI]
INCBX;偏移地址加一,指向第二个字符
MOVES:
[DI],BX;将指向第二个字符的偏移地址地址存入附加段前两个字节
MOVCX,ES:
[DI+2];从附加段取出输入字符数量
DECCX;字符数量减一
MOVES:
[DI+2],CX;将新的字符数量存入附加段后两个字节
JNZC1;若输入的字符串未处理完(CX!
=0),则跳回C1继续处理
MOVAH,4CH
INT21H
;MAINENDP
CODEENDS
ENDSTART
LESSON2-1
DATASSEGMENT
D1DB'ZYXWVUTSRQPONMLKJIHG$'
LENEQU$-D1
DATASENDS
EXTRASEGMENT
ORG1H
E1DBLENDUP(?
)
E2DB0DH,0AH,'Thelargestcharis:
$'
E3DB0DH,0AH,'Thelowestcharis:
$'
E4DB20DUP(?
)
EXTRAENDS
STACKSSEGMENT
S1DW20DUP(?
)
STACKSENDS
CODESSEGMENT
;MAINPROCFAR
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS,ES:
EXTRA
START:
MOVAX,DATAS;传送字符串
MOVDS,AX
MOVSI,OFFSETD1
MOVAX,EXTRA
MOVES,AX
MOVDI,OFFSETE1
MOVCX,LEN
CLD
REPMOVSB
MOVDI,OFFSETE1;升序排列
MOVCX,LEN-1
DECCX
L1:
MOVDX,CX
MOVBH,0
DECDI
L2:
INCDI
MOVAL,ES:
[DI]
CMPAL,ES:
[DI+1]
JBECONTI
XCHGAL,ES:
[DI+1]
MOVES:
[DI],AL
MOVBH,1
CONTI:
LOOPL2
CMPBH,0
JESTOP
MOVCX,DX
MOVDI,OFFSETE1
LOOPL1
STOP:
MOVDI,OFFSETE4
MOVES:
[DI],DS
MOVES:
[DI+2],ES
MOVDS,ES:
[DI+2];将附加段基址地址付给数据段
MOVDX,OFFSETE1
MOVAH,9;显示升序排列后的字符串
INT21H
MOVDX,OFFSETE2;显示最大数据
MOVAH,9
INT21H
MOVDI,OFFSETE1
MOVDL,ES:
[DI]
MOVAH,2
INT21H
MOVDX,OFFSETE3;显示最小数据
MOVAH,9
INT21H
MOVDI,OFFSETE1
MOVDL,ES:
[DI+19]
MOVAH,2
INT21H
MOVAH,4CH;退出DOS
INT21H
;RET
;MAINENDP
CODESENDS
ENDSTART
LESSON2-2
DATASSEGMENT
D1DB0DH,0AH,'Plesaeenteryourdatanumber:
$'
D2DB0DH,0AH,'Pleaseselectyourfunction:
',0DH,0AH,'1.Chanceto16',0DH,0AH,'2.ChancetoBCD',0AH,0DH,'3.Chanceto7duan',0AH,0DH,'4.Exitthesystem',0AH,0DH,'$'
D3DB20DUP('?
')
D4DB'?
'
TABLE1DB40H,79H,24H,30H,19H,12H,02H,78H,00H,18H
D5DB'Theansweris:
',0DH,0AH,'$'
D6DB'Youinputthewrongnumber,pleaseinputagain!
',0DH,0AH,'$'
D7DB20DUP('?
')
D8DB0DH,0AH,'$'
D9DB20H,'$'
DATASENDS
STACKSSEGMENTPARASTACK'STACK'
S1DB20DUP('?
')
STACKSENDS
EXTRASSEGMENT
E1DB20DUP('?
')
EXTRASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS,ES:
EXTRAS
START:
MOVAX,DATAS
MOVDS,AX
MOVAX,STACKS
MOVSS,AX
LEASP,S1
MOVAX,EXTRAS
MOVES,AX
LEADX,D1
MOVAH,09H
INT21H
LEADX,D3;输入最多5位十进制数字到缓冲区
MOVAH,0AH
INT21H
LEADX,D2;让用户选择功能
MOVAH,09H
INT21H
MOVAH,1
INT21H
LEASI,D4;存入用户的选择数字
MOV[SI],AL
LEADX,D8;回车换行
MOVAH,09H
INT21H
;LEADX,D2;显示答案说明
;MOVAH,09H
;INT21H
LEASI,D4;判断用户的选择功能
MOVAL,[SI]
CMPAL,31H
JESHILIU
CMPAL,32H
JEBCD
CMPAL,33H
JEQIDUAN
CMPAL,34H
JESTOP
JMPSTART
STOP:
MOVAH,4CH
INT21H
SHILIU:
MOVCX,5
DECCX
MOVAH,0
LEASI,D3;数字首地址
MOVAL,[SI+2]
SUBAL,30H
AGAIN1:
MOVDI,000AH;10
MULDI
MOVBH,0
INCSI
MOVBL,[SI+2]
SUBBL,30H
ADDAX,BX
LOOPAGAIN1
LEASI,D7;把得到的结果存到相应单元
MOV[SI],AX
LEASI,E1
MOVBYTEPTRES:
[SI+2],2;说明要显示2字节数字
CALLSHOW1
JMPSTART
BCD:
MOVCX,5
LEASI,D3;取原数字数字首地址
LEADI,D7;存处理后数字首地址
AGAIN2:
MOVBL,0FFH
MOVAL,[SI+2];依次取原数字
;比较AL中的数是否是0~9的ASCII码
CMPAL,39H;若AL中的数大于39H(数字9的ASCII码),说明不是数字
JAA1
SUBAL,30H;若AL中的数小于30H(数字0的ASCII码),说明不是数字
JBA1
MOVBL,AL
A1:
MOVAL,BL
MOV[DI],AL;依次存处理后的数字
INCSI
INCDI
A2:
LOOPAGAIN2
LEASI,E1
MOVBYTEPTRES:
[SI+2],5;说明要显示5字节数字
CALLSHOW
JMPSTART
QIDUAN:
MOVCX,5
LEASI,D3;取原数字数字首地址
LEADI,D7;存处理后数字首地址
AGAIN3:
MOVAL,[SI+2];依次取原数字
ANDAL,0FH
LEABX,TABLE1
XLAT
MOV[DI],AL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 微机 原理 实验 代码 软件 部分