微机汇编实验代码.docx
- 文档编号:6857186
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:20
- 大小:18.01KB
微机汇编实验代码.docx
《微机汇编实验代码.docx》由会员分享,可在线阅读,更多相关《微机汇编实验代码.docx(20页珍藏版)》请在冰豆网上搜索。
微机汇编实验代码
附:
整个实验代码:
实验一:
键盘显示程序设计实验(显示字符ascII码)
STACK1 SEGMENT STACK
DW 256 DUP(?
)
STACK1 ENDS
DATA SEGMENT USE16
MES1 DB 'share a word:
',0AH,0DH,'$'
SD DB 100 DUP(?
)
DATA ENDS
CODE SEGMENT USE 16
ASSUME CS:
CODE,DS:
DAT
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MES1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV SD,AL
MOV SI,OFFSET SD
MOV AL,DS:
[SI]
AND AL,0F0H
MOV CL,4
SHR AL,CL
CMP AL,0AH
JB C2
ADD AL 07H
C2:
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,DS:
[SI]
AND AL,0FH
CMP AL,0AH
JB C3
ADD AL,07H
C3:
ADD AL,03H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AX,4C00H
INT 21H
CODE ENDS
END START
实验二:
数据传送、数码转换程序设计实验(传送20个数据并排序)
DATASEGMENT
MSRDB20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1
NEQU20
MSR1DB'thesmallestandthelargest',0AH,0DH,'$'
DATAENDS
EXDASEGMENT
VALUEDB22DUP(?
)
EXDAENDS
;
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
EXDA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,EXDA
MOVES,AX
MOVBX,0
XORCX,CX
MOVCX,N
NEXT:
MOVAL,MSR[BX]
MOVES:
VALUE[BX],AL
INCBX
LOOPNEXT
MOVBX,OFFSETVALUE-1
MOVSI,1
FORI:
MOVDI,SI
INCDI
FORJ:
MOVAL,[BX+SI]
CMPAL,[BX+DI]
JBENEXTJ
XCHGAL,[BX+DI]
MOV[BX+SI],AL
NEXTJ:
INCDI
CMPDI,N
JBEFORJ
NEXTI:
INCSI
CMPSI,N-1
JBEFORI
;
MOVDX,OFFSETMSR1
MOVAH,9
INT21H
MOVAL,ES:
VALUE[0]
MOVBX,OFFSETVALUE
XORAH,AH
MOVAL,[BX]
RORAL,4
CALLFOR
RORAL,4
CALLFOR
MOVDL,'h'
MOVAH,2
INT21H
MOVBX,OFFSETVALUE+19
MOVAL,ES:
[BX]
XORAH,AH
MOVAL,[BX]
RORAL,4
CALLFOR
RORAL,4
CALLFOR
MOVDL,'h'
MOVAH,2
INT21H
MOVDL,0DH
INT21H
MOVDL,0AH
INT21H
MOVBX,OFFSETVALUE
MOVES:
VALUE[20],0
;将附加段寄存器指向的段值赋给数据段寄存器
MOVBX,OFFSETVALUE
PO:
XORAH,AH
MOVAL,[BX]
RORAL,4
CALLFOR
RORAL,4
CALLFOR
MOVDL,'h'
MOVAH,2
INT21H
MOVDL,0DH
INT21H
MOVDL,0AH
INT21H
INCBX
CMPES:
VALUE[BX],0
JAPO
MOVAH,4CH
INT21H
;
FORPROC
PUSHAX
ANDAL,0FH
CMPAL,09H
JANEXT2
ADDAL,30H
MOVDL,AL
MOVAH,2
INT21H
POPAX
RET
NEXT2:
ADDAL,37H
MOVDL,AL
MOVAH,2
INT21H
POPAX
RET
FORENDP
CODEENDS
ENDSTART
实验三:
运算类程序设计实验(两个五位数减法运算,减数可大于被减数)
DATASEGMENT
HANGDB0AH,0DH,'$'
SHUDB'INPUTA5(WEI)NUMBER:
$'
A1DB8
DB7DUP(?
)
A2DB8
DB7DUP(?
)
A3DB5DUP(?
)
A4DB18DUP(?
)
DB'$'
DATAENDS
STAKSEGMENTSTACK
SADB100DUP(?
)
STAKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STAK
MAINPROCFAR
START:
MOVAX,DATA
MOVDS,AX
MOVAX,STAK
MOVSS,AX
MOVDX,OFFSETSHU
MOVAH,09H
INT21H
MOVDX,OFFSETA1
MOVAH,0AH
INT21H
MOVBX,DX
ADDBX,2
MOVDX,OFFSETHANG
MOVAH,09H
INT21H
MOVDX,OFFSETSHU
MOVAH,09H
INT21H
MOVDX,OFFSETA2
MOVAH,0AH
INT21H
MOVSI,DX
ADDSI,2
MOVCX,5
BI:
MOVAL,[BX]
CMPAL,[SI]
JBL2
JAL1
INCBX
INCSI
LOOPBI
L1:
MOVAX,1
PUSHAX
MOVCX,5
CLC
MOVBX,6
MOVSI,4
P1:
MOVAL,A1[BX]
SBBAL,A2[BX]
MOVA3[SI],AL
DECBX
DECSI
LOOPP1
MOVSI,0
MOVCX,5
JIA:
CMPA3[SI],9
JALL1
JBELL2
LL1:
ADDA3[SI],10
LL2:
ADDA3[SI],30H
INCSI
LOOPJIA
JMPCHU
L2:
MOVAX,0
PUSHAX
MOVCX,5
POPBX
POPSI
CLC
MOVBX,6
MOVSI,4
P11:
MOVAL,A2[BX]
SBBAL,A1[BX]
MOVA3[SI],AL
DECBX
DECSI
LOOPP11
MOVSI,0
MOVCX,5
JIA1:
CMPA3[SI],9
JALL11
JBELL22
LL11:
ADDA3[SI],10
LL22:
ADDA3[SI],30H
INCSI
LOOPJIA1
CHU:
MOVDX,OFFSETHANG
MOVAH,09H
INT21H
MOVSI,0
MOVCX,5
K1:
MOVAL,A1[SI+2]
MOVA4[SI],AL
INCSI
LOOPK1
MOVA4[SI],'-'
INCSI
MOVCX,5
MOVBX,2
K2:
MOVAL,A2[BX]
MOVA4[SI],AL
INCSI
INCBX
LOOPK2
MOVA4[SI],'='
POPAX
CMPAX,0
JAZ2
Z1:
INCSI
MOVA4[SI],'-'
Z2:
INCSI
MOVCX,5
MOVBX,0
K3:
MOVAL,A3[BX]
MOVA4[SI],AL
INCSI
INCBX
LOOPK3
MOVDX,OFFSETA4
MOVAH,09H
INT21H
MOVAX,4C00H
INT21H
MAINENDP
CODEENDS
ENDSTART
实验四:
子程序设计实验(含进制及数码转换)
功能:
输入1时将输入数转换为十六进制输出,输入2时将输入数转化为bcd码输出,输入3时将输入数转化为七段共阳极码,;输入4时返回dos系统
DATASEGMENT
MESDB'Inputanumberfrom1to4,1-H,2-bcd,3-7-duan,4-dos',0AH,0DH,'$'
MEDB'youputawrongnumber',0AH,0DH,'$'
TEMDB'--Inputadecimalnumber','$';16
STR1DB0AH,0DH;16
NUMDB4DUP(?
),'H$';16
TABDB'0123456789ABCDEF';16
MES2DB'--Ileaseinputtwoormorebitsdecimal:
',0AH,0DH,'$';bcd
MES1DB'--TheBCDcodeofdecimalare:
$'
MES3DB'0000$'
MES4DB'0001$'
MES5DB'0010$'
MES6DB'0011$'
MES7DB'0100$'
MES8DB'0101$'
MES9DB'0110$'
MES10DB'0111$'
MES11DB'1000$'
MES12DB'1001$'
BUFDB100
DB?
DB100DUP(0)
MEDDB100DUP(?
);bcd
MES21DB'--Pleaseinputtwoormorebitsdecimal:
',0AH,0DH,'$';7-d
MES111DB'--The7duancodeofdecimalare:
$'
TAB1DB40H,79H,24H,30H,19H,12H,02H,78H,00H,18H
BUF1DB100
DB?
DB100DUP(0)
MED1DB100DUP(?
);7-d
DATAENDS
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
START:
MOVAX,DATA
MOVDS,AX
BEGAIN:
MOVDL,0DH
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
MOVDX,OFFSETMES
MOVAH,9
INT21H
MOVAH,1
INT21H
CMPAL,'1'
JZFOR1
CMPAL,'2'
JZFOR2
CMPAL,'3'
JZFOR3
CMPAL,'4'
JZFOR4
MOVDX,OFFSETME
MOVAH,9
INT21H
JMPBEGAIN
FOR1:
JMPFUNCTION1
FOR2:
JMPFUNCTION2
FOR3:
JMPFUNCTION3
FOR4:
JMPFUNCTION4
FUNCTION1:
LEADX,TEM
MOVAH,9
INT21H
XORBX,BX
MOVCX,10
NEXT:
MOVAH,1;1号功能从键盘读入字符
INT21H
CMPAL,0DH;如果=13也就是回车则跳到conv进行转换
JZCONV
PUSHAX;暂存ax
MOVAX,BX;bx存当前已有的数值,这里交换是为了用num
MULCX;bx=bx*10
MOVBX,AX
POPAX
ANDAL,0FH
XORAH,AH;清空高位
ADDBX,AX;相加
JMPNEXT;继续读取下个字符
CONV:
MOVAX,BX;bx里存的是输入的10进制数
MOVCH,4
LEABX,TAB;bx保存16进制字符表的基址
MOVCL,4
LEASI,NUM;num是转换后存16进制字符的地方
LOPA:
ROLAX,CL;ax左移动4位,由于是rol,所以高4位移到低4位
PUSHAX;暂存
ANDAX,000FH;取出低4位,也就是高4位移过来位
MOVDI,AX;查表
MOVAL,[BX+DI]
MOV[SI],AL;存储
INCSI;下个位置
POPAX;还原状态
DECCH
JNZLOPA
LEADX,STR1;输出
MOVAH,9
INT21H
JMPBEGAIN
;
FUNCTION2:
MOVDX,OFFSETMES2
MOVAH,09H
INT21H
MOVDX,OFFSETBUF
MOVAH,0AH
INT21H
MOVBX,DX
MOVCL,[BX+1]
MOVBX,2
A1:
MOVDL,0FFH
MOVAL,BUF[BX]
CMPAL,3AH;比较AL中的数是否是0~9的ASCII码
JNBA2
SUBAL,30H
JBA2
MOVDL,AL
A2:
MOVAL,DL
MOVMED[BX],AL
INCBX
LOOPA1
MOVDX,OFFSETBUF
MOVBX,DX
MOVCL,BX[1]
MOVDX,OFFSETMES1
MOVAH,09H
INT21H
MOVBX,2
A3:
MOVAL,MED[BX]
CALLSHOW1
A4:
MOVDL,20H
MOVAH,02H
INT21H
INCBX
LOOPA3
JMPBEGAIN
SHOW1PROCNEAR
CMPAL,0
JEZERO
CMPAL,1
JEONE
CMPAL,2
JETWO
CMPAL,3
JETHREE
CMPAL,4
JEFOUR
CMPAL,5
JEFIVE
CMPAL,6
JESIX
CMPAL,7
JESEVEN
CMPAL,8
JEEIGHT
CMPAL,9
JENINE
ZERO:
MOVDX,OFFSETMES3
MOVAH,09H
INT21H
JMPA4
ONE:
MOVDX,OFFSETMES4
MOVAH,09H
INT21H
JMPA4
TWO:
MOVDX,OFFSETMES5
MOVAH,09H
INT21H
JMPA4
THREE:
MOVDX,OFFSETMES6
MOVAH,09H
INT21H
JMPA4
FOUR:
MOVDX,OFFSETMES7
MOVAH,09H
INT21H
JMPA4
FIVE:
MOVDX,OFFSETMES8
MOVAH,09H
INT21H
JMPA4
SIX:
MOVDX,OFFSETMES9
MOVAH,09H
INT21H
JMPA4
SEVEN:
MOVDX,OFFSETMES10
MOVAH,09H
INT21H
JMPA4
EIGHT:
MOVDX,OFFSETMES11
MOVAH,09H
INT21H
JMPA4
NINE:
MOVDX,OFFSETMES12
MOVAH,09H
INT21H
JMPA4
RET
ENDP
;
FUNCTION3:
MOVDX,OFFSETMES21;显示提示
MOVAH,09H
INT21H
MOVDX,OFFSETBUF1
MOVAH,0AH
INT21H
MOVBX,DX
MOVCL,[BX+1]
MOVBX,2
A11:
MOVDL,0FFH
MOVAL,BUF1[BX]
CMPAL,3AH;比较AL中的数是否是0~9的ASCII码
JNBA21
SUBAL,30H
JBA21
MOVDL,AL
A21:
MOVAL,DL
MOVMED1[BX],AL
INCBX
LOOPA11
MOVDX,OFFSETBUF1
MOVBX,DX
MOVCL,BX[1]
MOVDX,OFFSETMES111
MOVAH,09H
INT21H
MOVBX,2
A31:
CALLSHOW2
MOVDL,48H
MOVAH,02H
INT21H
MOVDL,20H
MOVAH,02H
INT21H
INCBX
LOOPA31
JMPBEGAIN
SHOW2PROCNEAR
MOVAL,MED1[BX]
MOVDX,BX
MOVBX,OFFSETTAB1
XLATTAB1
MOVBX,DX
MOVMED1[BX],AL
ANDAL,0F0H;取高4位
SHRAL,4
CMPAL,0AH;是否是A以上的数
JBC2
ADDAL,07H
C2:
ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
MOVAL,MED1[BX]
ANDAL,0FH;取低4位
CMPAL,0AH
JBC3
ADDAL,07H
C3:
ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
RET
ENDP
FUNCTION4:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 汇编 实验 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)