山东科技大学微机实验源程序Word文档下载推荐.docx
- 文档编号:16227623
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:18
- 大小:17.76KB
山东科技大学微机实验源程序Word文档下载推荐.docx
《山东科技大学微机实验源程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《山东科技大学微机实验源程序Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
TAB1:
MOVAH,2
movdl,'
H'
.exit
end
****************************************
程序二:
2-2
.MODELSMALL
.STACK
DVARDB"
MYDATE:
TVAR1DB"
mytime:
MYnumberdb"
MYnumber:
201301100521$"
mynamedb"
myname:
liusimei$"
TODB"
weekday:
$"
SP0DB"
COUNT=15;
DATEDISDBCOUNTDUP(?
)
TIMEDISDBCOUNTDUP(?
)
weekdaydb?
MOVDX,OFFSETDVAR
显示mydate
CALLDATE_DISPLAY;
显示日期和时间
CALLSP1;
调用换行
MOVDX,OFFSETTO
显示myweekend
movah,02h
movdl,weekday
CALLSP1
MOVDX,OFFSETTVAR1
显示mytime
CALLTIME_DISPLAY;
调用子程序显示时间
NOP
callMY_DATA;
显示2A
MOVDX,OFFSETmyname
显示name
MOVDX,OFFSETMYnumber
显示MYnumber
.exit
;
除法指令dival存ax/r8(m8)的商ah存ax/r8(m8)的余数ax存dx.ax/r16(m16)的商dx存
dx.ax/r16(m16)的余数
DOS调用2Ah取系统日期CX=年DH=月DL=日AL=星期
DOS调用2Ch取系统日期CH=时DH=秒DL=百分之几秒CL=分
DATE_DISPLAYPROC
MOVAH,2AH;
取当前系统日期
INT21H
addal,30h
leadi,weekday
mov[di],al
MOVAX,CX;
送年份入AX作为被除数【年份存在CX中】
MOVBX,wordptr10;
(BX)=10,作为除数
LEASI,DATEDIS+3;
使SI指向年的最后一位【从0开始数】
MOVCX,4;
(CX)=4年的位数,循环4次
PUSHDX
;
DX入栈,保存月日AX入栈,保存星期
TAB:
XORDX,DX;
DX清零,存余数
DIVBX;
(DX,AX)/BX,商送AX,余数送DX
ADDDL,30H;
余数与30H相加变为字符的ASCII码
MOV[SI],DL;
余数送入SI所指向的字节区
DECSI;
SI减一
LOOPTAB;
循环4次
POPDX;
DX还原
MOVAL,DH;
月送AL【日存在DL中】
XORAH,AH;
AH清零
DIVBL;
AX/BL,商送AL,余数送AH【AL为十位,AH为个位】
ADDAX,3030H;
转变为数字字符的ASCII码
LEASI,DATEDIS+6;
使SI指向月的低位
MOV[SI],AH
DECSI
MOV[SI],AL
MOV[SI],BYTEPTR'
:
'
(AX)送SI所指向的字节区
MOVAL,DL;
日送AL【月存在DH中】
LEASI,DATEDIS+9;
使SI指向日的个位
LEASI,DATEDIS+10
$'
LEADX,DATEDIS
INT21H
RET;
调用后返回
DATE_DISPLAYENDP
*********时间显示子程序*********
TIME_DISPLAYPROCNEAR
MOVAH,2CH;
取当前系统时间
MOVAL,CH;
时送AL(CH=时DH=秒DL=百分之几秒CL=分)
LEASI,TIMEDIS+1;
使SI指向时的低位
MOV[SI],AL;
使si-1指向时间的高位
MOVAL,CL;
分送AL
LEASI,TIMEDIS+4;
使si指向后面提供两个空位给分钟
MOV[SI],AL
分送完毕
把秒送到al中
LEASI,TIMEDIS+7;
使si指向后面提供两个空位给秒钟
MOV[SI],AH
LEASI,TIMEDIS+10;
秒送完毕
LEASI,TIMEDIS+11
LEADX,TIMEDIS
RET;
时间调用返回
TIME_DISPLAYENDP
MY_DATAPROC;
子程序显示2a
JMPTABH
TABH:
movDL,AL
JMPTABL
TABL:
movah,2
INT21H
RET
MY_DATAENDP
SP1PROC
MOVDX,OFFSETSP0
SP1ENDP
END
程序三3-1
.DATA
dispdb'
WelcometoSDUST'
count1=($-disp)
movcx,count1
movebx,0
agina:
xorax,ax;
控制内循环
moval,disp[ebx];
取一个双字,ebx相对基址
CALLhexdis
incebx
loopagina
************************************
hexdisproc;
子程序显示一个al字节
movAH,2
MOVDL,'
'
ret;
子程序返回
hexdisendp
End
程序四3-2
yuandb'
theOriginaldata:
overddb'
theorderdata:
displaydd1,2,3,6,5
count1=($-display)/4
movah,9
movdx,offsetyuan
int21h;
显示字符theOriginaldata
calldhexdis
callorder
nop
movah,09H
movdx,offsetoverd
显示字符theorderoverdata:
calldhexdis
**********************eax显示双字*******
dhexdisproc
movecx,count1
movebx,0;
控制循环次数
agina:
moveax,display[ebx*4]
pushebx
pushecx
movecx,4
*****
love:
ROLeax,8
pusheax;
将高位最低
callhexdis
popeax
looplove
popecx
popebx
movcx,15
iii:
loopiii
ret
dhexdisendp
******************显示完毕******
**********排序开始******************
orderproc
movecx,count1
dececx
again:
movebx,0
inn:
moveax,display[ebx]
cmpeax,display[ebx+4]
jncmore
xchgeax,display[ebx+4]
movdisplay[ebx],eax
more:
addebx,4
loopinn
loopagain
orderendp
**************排序结束**********************
**************al显示字符****
ret
hexdisendp;
**********显示字符完毕*****
实验五
intoffdw?
intsegdw?
numberdb0
interdb'
theinterrupt'
0ah,'
movAX,3509H
movintoff,bx
movintseg,es
pushds
movdx,offsetscanning
movax,segscanning
movds,ax
movax,2509H
popds
movnumber,0
tab2:
sti
cmpnumber,10
jnctab1
Jctab2
tab1:
callhexdis
movdx,intoff
movax,intseg
movds,ax
movax,2509h
************interrupt****
scanningproc
moval,20h
out20h,al
cmpnumber,10
jncnext1
incnumber
moval,number
clc
daa
leasi,inter
pushax
shral,4
mov[si+4],al
mov[si+5],al
movah,9
movdx,offsetinter
next1:
inal,60h
inal,61h
oral,80h
out61h,al
iret
scanningendp
**********theinterruptend
******thehexdisplay***
hexdisproc
DAA
hexdisendp
实验六
moval,00010100B
MOVDx,9803H
outDx,AL
MOVDx,9800H
MOVAL,20h
OUTDx,Al
.EXIT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 山东 科技大学 微机 实验 源程序