西电微机原理上机作业完整版Word格式文档下载.docx
《西电微机原理上机作业完整版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《西电微机原理上机作业完整版Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
MOVAX,07H[BX]
000B
ACAB
MOVAX,[BP]
0003
B4B3
MOVAX,TABLE[BP]
A8A7
MOVAX,08H[BP]
BCBB
MOVAX,[BP+06H]
BAB9
MOVAX,DS:
[BP+03H]
0006
A7A6
MOVAX,[BP]+05H
B9B8
[SI+03H]
C6C5
MOVAX,[DI+06H]
MOVAX,[DI]+05H
MOVAX,TABLE[SI]
MOVAX,[SI]
0002
A3A2
MOVAX,TABLE[DI]
A6A5
MOVAX,[SI]+05H
MOVAX,[BX][DI+01H]
基址变址且相对寻址
MOVAX,[BX][SI]+03H
MOVAX,TABLE[BX][SI]
000A
ABAA
[BX][DI]
基址变址寻址
MOVAX,[BP][DI+02H]
B7B6
MOVAX,TABLE[BP][DI]
[BP][SI]
MOVAX,[BP][SI+05H]
BBBA
MOVAX,03H[BP][DI]
MOVAX,[BP][SI]
B6B5
MOVAX,[BP+02H][DI+03H]
MOVAX,TABLE[BP+02H][DI+03H]
000D
AEAD
1.编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。
STACKSEGMENTSTACK'
STACK'
DW100HDUP(?
)
TOPLABELWORD
STACKENDS;
堆栈段
DATASEGMENT
ADD1DD12678532H
ADD2DD21736543H
SUMDD?
DATAENDS;
数据段
CODESEGMENT;
代码段
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
LEASP,TOP
LEASI,ADD1
LEADI,ADD2
MOVAL,[SI]
ADDAL,[DI]
DAA
MOVBYTEPTRSUM,AL
MOVAL,[SI+1]
ADCAL,[DI+1]
DAA
MOVBYTEPTRSUM+1,AL
MOVAL,[SI+2]
ADCAL,[DI+2]
MOVBYTEPTRSUM+2,AL
MOVAL,[SI+3]
ADCAL,[DI+3]
MOVBYTEPTRSUM+3,AL
MOVAX,WORDPTRSUM+2
CALLDISPAX
MOVAX,WORDPTRSUM
MOVAH,4CH
INT21H
DISPALPROCNEAR
PUSHAX
PUSHCX
PUSHDX
MOVCL,4
SHRAL,CL
CALLCHANG
MOVAH,02
MOVDL,AL
INT21H
POPAX
ANDAL,0FH
POPDX
POPCX
RET
DISPALENDP
CHANGPROCNEAR
CMPAL,10
JNGECHANG1
ADDAL,7
CHANG1:
ADDAL,30H
CHANGENDP
DISPAXPROCNEAR
XCHGAL,AH
CALLDISPAL
XCHGAH,AL
DISPAXENDP
CODEENDS
ENDSTART
2.有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。
STACKSEGMENTSTACK
DB256DUP(?
STACKENDS
DATA1DW7800H,6832H,0000H,87H,1275H,0EC34H
STRING1DB'
inputnumber:
'
0DH,0AH,'
$'
STRING2DB'
Thenumbersfromlargetosmallis:
DATAENDS
CODESEGMENT
ASSUMECS:
DATA,ES:
MOVES,AX
LEADX,STRING1
MOVAH,09H
MOVCX,6
LEASI,DATA1
L1:
MOVAX,[SI]
ADDSI,2
CALLDISPCR
LOOPL1
MOVCX,5
ADDSI,10
LP1:
PUSHSI
LP2:
CMPAX,[SI-2]
JBENOXCHG
XCHGAX,[SI-2]
MOV[SI],AX
NOXCHG:
DECSI
LOOPLP2
POPSI
LOOPLP1
LEADX,STRING2
MOVCX,6
L2:
LOOPL2
DISPALPROC
MOVAH,02H
POPAX
ANDAX,0FH
CHANGPROC
CHANGENDP
DISPAXPROC
DISPCRPROC
MOVAH,2
MOVDL,0AH
MOVDL,0DH
DISPCRENDP
3.编写如下程序,并在机器上调试成功。
程序采用菜单式选择,可以接收用户从键盘输入的四个命令(1-4),各命令功能分别为:
(1)按下“1”键,完成字符串小写字母变成大写字母。
(2)按下“2”键,完成找最大值
(3)按下“3”键,完成排序
(4)按下“4”键,结束程序运行,返回系统提示符。
DISPLMACROSTR
PUSHDX
PUSHAX
LEADX,STR
ENDM
ISCONTINUEMACROL
DISPS15,10,SMENU
MOVAH,08H
CMPAL,1BH
JNEL
JMPMAIN
CURSORMACROCURX,CURY
PUSHBX
MOVDH,CURX
MOVDL,CURY
MOVBH,0
INT10H
POPBX
DISPSMACROX,Y,STR
MOVBH,00H
MOVDH,X
MOVDL,Y
LEADX,STR
SCROLLMACRON,ULR,ULC,LRR,LRC,ATT
MOVAH,06H
MOVAL,N
MOVCH,ULR
MOVCL,ULC
MOVDH,LRR
MOVDL,LRC
MOVBH,ATT
PREPMACROT
LEASI,INBUF+1
LEADI,OUTBUF
SCROLL21,2,0,22,79,0FH
DISPS3,20,T
DISPS6,2,CAPION
DISPS8,2,INCAP
MOVAH,0AH
MOVCH,0
MOVCL,[SI]
INCSI
DB100HDUP(?
BASEDWMAIN,LTC,FMV,SORTS,EXIT
WELCMDB'
Welcometothisprogram!
MMENUCDB'
Pleaseinputthenumber!
MMENU1DB'
1-LowercaseLettersToCapitalLetters$'
MMENU2DB'
2-FindTheMaximumfigure$'
MMENU3DB'
3-Sort$'
MMENU4DB'
4-Exit!
SMENUDB'
PressAnyKeyTorestart,Press"
ESC"
ToReturnToMainMenu!
WROCAPDB'
WRONG!
Youhavepress"
"
key!
Pleaseinputanumberbetween1and4!
CAPIONDB'
PleaseInputYourStringsandEndWith"
Enter"
Key!
INCAPDB'
YourInputIs:
$'
INBUFDB100
DB?
DB100DUP(?
OUTCAPDB'
MyOutputIs:
OUTBUFDB100DUP(?
MAXCAPDB'
ThecharofmaxASCIIis:
.$'
ERRINFDB'
ERROR!
Pleasechecktheformatyouinput!
TDINVDB'
Invalidtimedata!
Inputagain!
NODATCAPDB'
Youhaveinputnothing!
TIMEDB8DUP('
:
),12DUP('
'
LEADX,INBUF
CLC
MAIN:
SCROLL0,0,0,24,79,0
SCROLL25,0,0,24,79,50H
DISPS8,20,MMENUC
DISPS10,20,MMENU1
DISPS12,20,MMENU2
DISPS14,20,MMENU3
DISPS16,20,MMENU4
ML:
CURSOR19,1DH
MOVAH,01H
CMPAL,31H
JLERROR
CMPAL,35H
JGERROR
ANDAX,00FH
LEABX,BASE
SHLAL,1
ADDBX,AX
JMPWORDPTR[BX]
;
CMPAL,'
1'
JELTC
2'
JEFMV
3'
JESORTS
4'
JEEXIT
ERROR:
CMPAL,0DH
JEMCR
MOV[WROCAP+23],AL;
Otherchar
MOV[WROCAP+24],'
JMPD
MCR:
MOVWORDPTR[WROCAP+23],'
RC'
D:
DISPS20,5,WROCAP;
Showthewronginformation
JMPML
LTC:
CALLLLTOCL
ISCONTINUELTC
FMV:
CALLFMAXV
ISCONTINUEFMV
SORTS:
CALLSORT
ISCONTINUESORTS
EXIT:
LLTOCLPROC
REFLASHL:
PREPMMENU1
CMPCL,0
JEREFLASHL
LL1:
a'
JBMTOB;
NOCHANGE
z'
JAMTOB
SUBAL,20H;
Convert
MTOB:
MOV[DI],AL
INCSI
INCDI
LOOPLL1
MOVBYTEPTR[DI],'
DISPS10,2,OUTCAP
DISPS10,17,OUTBUF
LLTOCLENDP
FMAXVPROC
REFLASHF:
PREPMMENU2
JEREFLASHF
MOVAL,0
FL1:
CMPAL,[SI]
JANEXT
NEXT:
LOOPFL1
MOV[MAXCAP+26],AL
DISPS10,2,MAXCAP
RET
FMAXVENDP
SORTPROC
PREPMMENU3
DECCX
ADDSI,CX
MOVBYTEPTR[SI+1],'
CMPAL,[SI-1]
JBENOXCHG
XCHGAL,[SI-1]
MOV[SI],AL
POPSI
POPCX
DISPS10,2,OUTCAP
DISPS10,17,INBUF[2]
RET
SORTENDP
BCDASCPROCNEAR
CBW
MOVBL,10
DIVBL
MOVTIME[SI],AL
ADDAH,30H
MOVTIME[SI],AH
BCDASCENDP
ENDSTART
按下4键