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