微机原理实验报告程序.docx
《微机原理实验报告程序.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告程序.docx(14页珍藏版)》请在冰豆网上搜索。
微机原理实验报告程序
实验2—1
(1)定义字
DATASEGMENT
ADW855CH
BDW0AB43H
NUMDW?
DATAENDS
CODESEGMENT
AssumeCS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,A
MOVBX,B
ADDAX,BX
MOVNUM,AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验2—1
直接寻址
DATASEGMENT
ADB5CH,85H
BDB43H,0ABH
NUMDW?
DATAENDS
CODESEGMENT
AssumeCS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,A
MOVBX,B
ADDAX,BX
MOVNUM,AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验2—3
拆字
DATASEGMENT
ORG1000H
NUMDW1234H
ORG4000H
ADB?
BDB?
DATAENDS
CODESEGMENT
AssumeCS:
CODE,DS:
DATA
START:
MOVAX,NUM
MOVA,AH
MOVB,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验3—3
DATASEGMENT
INFOR1DB0AH,0DH,'PleasePressanykeytoinputaletter:
$';0AH为换行,0DH为回车
INFOR2DB0AH,0DH,'YouInputalowercaseletter!
$'
INFOR3DB0AH,0DH,'Youinputauppercaseletter!
$'
INFOR4DB0AH,0DH,'Youinputadigit!
$'
INFOR5DB0ah,0dh,'Youinputotherletter!
$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETINFOR1
MOVAH,09H;输出字符串INFOR1
;MOVAH,1
INT21H
MOVAH,01H;从键盘输入一个字符
INT21H
CMPAL,'0'
JBOTHER;小于0,为其他字符
CMPAL,'9'
JBEDIGIT;大于等于0,小于等于9,为数字
CMPAL,'A'
JBOTHER
CMPAL,'Z'
JBEUPPER
CMPAL,'a'
JBOTHER
CMPAL,'z'
JBELOWER
JMPPEND
LOWER:
MOVDX,OFFSETINFOR2
MOVAH,09H
INT21H
JMPPEND
UPPER:
MOVDX,OFFSETINFOR3
MOVAH,09H
INT21H
JMPPEND
DIGIT:
MOVDX,OFFSETINFOR4
MOVAH,09H
INT21H
JMPPEND
OTHER:
MOVDX,OFFSETINFOR5
MOVAH,09H
INT21H
JMPPEND
PEND:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验3—1
DATASEGMENT
STRINGDB'Iamastudent'
LENEQU$-STRING
DATAENDS
CODESEGMENT
AssumeCS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETSTRING
MOVCL,LEN
NEXT:
MOVAL,[BX]
CMPAL,'a'
JBLOP
CMPAL,'z'
JALOP
SUBAL,20H
MOV[BX],AL
LOP:
INCBX
DECCL
JNZNEXT
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验4—1
DATASEGMENT
ADB'1234567890'
NEQU$-A
BDBNDUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
LEASI,A
LEADI,B
ADDDI,N
MOVCX,N
MOVE:
MOVAL,[SI]
MOVES:
[DI],AL
INCSI
DECDI
LOOPMOVE
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验4—2
DATASEGMENT
ORG1000H
DB100DUP('A')
ORG1050H
DB100DUP('B')
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
;MOVES,AX
MOVSI,1000H
MOVDI,1050H
MOVCX,100
AGAIN:
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPAGAIN
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验4—3
DATASEGMENT
BUFDW1,2,3,4,5,6,7,8,9,0
MAXDW0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETBUF
MOVCX,10
AGAIN:
MOVAX,[SI]
CMPAX,MAX
JBNEXT
MOVMAX,AX
NEXT:
INCSI
INCSI
LOOPAGAIN
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验6—1
DATASEGMENT
STRDB'Pleaseinputacharacter:
$'
STR1DB0ah,0dh
STR3DB?
'H$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETSTR
MOVAH,09H
INT21H
MOVAH,01H
INT21H
MOVSTR1,AL
MOVDX,OFFSETSTR1
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验6—2
DATASEGMENT
STR1DB0dh,0ah,'Pleaseinputacharacter:
$'
STR2DB0dh,0ah,'Youinputanumber!
$'
STR3DB0dh,0ah,'Thecharacteryouinputisnotanumber!
$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETSTR1
MOVAH,09H
INT21H
MOVAH,01H
INT21H
CMPAL,30H
JBNEXT1
CMPAL,39H
JANEXT1
MOVDX,OFFSETSTR2
MOVAH,09H
INT21H
JMPNEXT2
NEXT1:
MOVDX,OFFSETSTR3
MOVAH,09H
INT21H
NEXT2:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验6—3
DATASEGMENT
info1db0dh,0ah,'inputstring:
$'
info2db0dh,0ah,'outputstring:
$'
STRDB20DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETSTR
ADDSI,10
MOV[SI],BYTEPTR'$'
MOVDX,OFFSETinfo1
MOVAH,09H
INT21H
MOVCX,10
AGAIN:
MOVAH,01H
INT21H
DECSI
MOV[SI],AL
LOOPAGAIN
MOVDX,OFFSETSTR
MOVAH,09H
INT21H
MOVAH,01H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验6—1
;输入字符后回车
CODESEGMENT
ASSUMECS:
CODE,DS:
CODE
START:
MOVAX,CODE
MOVDS,AX
MOVAH,01H
INT21H
MOVDL,0AH
INT21H
PUSHAX
ANDAX,00FFH
MOVCL,4
SHRAL,CL
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
POPAX
ANDAL,0FH
CMPAL,0AH
JNCNEXT
ADDAL,30H
JMPfinal
NEXT:
ADDAL,37H
final:
MOVDL,AL
MOVAH,02H
INT21H
MOVDL,'H'
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验6—3
DATASEGMENT
info1DB0dh,0ah,'inputstring:
$'
info2DB0dh,0ah,'outputstring:
$'
STRDB0Bh,0,20dup(?
)
nEQU$-STR
DB'$'
DATAENDS
CODESEGMENT
ASSUMEcs:
code,ds:
data
START:
movax,DATA
movDS,ax
leaDX,info1
movAH,09H
INT21H
leaDX,STR
movAH,0AH
INT21H
MOVCX,0
leaSI,STR
movDI,SI
addDI,n-1
INCSI
INCSI
number:
MOVBL,[SI]
CMPBL,0DH
JZNEXT
INCCX
INCSI
JMPnumber
NEXT:
leaSI,STR
INCSI
INCSI
again:
movbl,[SI]
mov[DI],bl
INCSI
DECDI
loopagain
leaDX,info2
movAH,09H
INT21H
INCDI
movDX,DI
movAH,09H
INT21H
movAH,4ch
INT21h
CODEends
endstart
codesegment
assumecs:
code
start:
movah,1
int21h
cmpal,1bh
jztj
movbl,al
movch,2
rotate:
movcl,4
rolbl,cl
moval,bl
andal,0fh
addal,30h
cmpal,3ah
jlprintit
addal,7h
printit:
movdl,al
movah,2
int21h
decch
jnzrotate
jmpstart
tj:
movax,4c00h
int21h
codeends
endstart