微机原理与接口技术设计实验Word文件下载.docx
《微机原理与接口技术设计实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术设计实验Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
MOVAL,[SI]
MOVBL,[DI]
CMPAL,BL
JNEDISMATCH
INCSI
INCDI
LOOPCOMPARE
MATCH:
LEADX,MESSAGE1
JMPDISP
DISMATCH:
LEADX,MESSAGE2
DISP:
MOVAH,09H
INT21H
MOVAH,4CH
CODEENDS
ENDSTART
实验二:
编写程序,从键盘输入一串字符,以‘$’或回车结束,将其中的小写字母转变为大写字母,其余字符不做转换,原样输出,结果显示在屏幕上。
BUFDB50
DB?
DB50DUP(?
)
INPUTSTRINGDB'
PLEASEINPUTASTRING:
'
'
OUTPUTSTRINGDB'
OUTPUTSTRINGIS:
ENTERSTRINGDB0DH,0AH,'
ASSUMECS:
MOVAX,DATA
LEADX,INPUTSTRING
LEADX,BUF
MOVAH,0AH
LEADX,ENTERSTRING
LEABX,BUF
ADDBX,2
NEXT1:
MOVAL,[BX]
INCBX
CMPAL,24H
JZDISP
CMPAL,61H
JBNEXT1
CMPAL,7AH
JANEXT1
SUBAL,20H
MOV[BX-1],AL
JMPNEXT1
LEADX,OUTPUTSTRING
LEADX,BUF+2
ENDSTART
实验三:
利用子程序方法编写程序,设有10个无符号数的字节序列,查找该序列中的最大值和最小值,并把结果显示在屏幕上。
参考程序1:
(针对一位10进制数)
STACKSEGMENTSTACK
DW256DUP(?
)
TOPLABELWORD
STACKENDS
BUFDB00H,01H,02H,03H,04H
DB05H,06H,07H,08H,09H
COUNTEQU$-BUF
MAXSTRINGDB'
THEMAXIMUNNUMBERIS:
MINSTRINGDB'
THEMINIMUNNUMBERIS:
DATA,SS:
STACK
MOVAX,STACK
MOVSS,AX
LEASP,TOP
MOVSI,OFFSETBUF
MOVCX,COUNT
CALLBRANCH
PUSHAX
LEADX,MAXSTRING
POPAX
MOVDL,AH
ADDDL,30H
MOVAH,02H
LEADX,MINSTRING
MOVDL,AL
BRANCHPROCNEAR
JCXZNEXT4
PUSHSI
PUSHCX
PUSHBX
MOVBH,[SI]
MOVBL,BH
CLD
LODSB
CMPAL,BH
JBENEXT2
MOVBH,AL
JMPNEXT3
NEXT2:
JAENEXT3
MOVBL,AL
NEXT3:
LOOPNEXT1
MOVAX,BX
POPBX
POPCX
POPSI
NEXT4:
RET
BRANCHENDP
参考程序二:
(针对两位十六进制数或无符号数)
BUFDB0FFH,55H,33H,44H,54H
DB45H,46H,47H,48H,1AH
MOVDX,AX
PUSHDX
POPDX
MOVAL,DH
CALLDISPGAO4
CALLDISPDI4
MOVAL,DL
DISPDI4PROCNERR;
低四位
ANDAL,0FH
MOVDL,AL
CMPDL,9
JLENUM1
ADDDL,7
NUM1:
ADDDL,30H
MOVAH,02H
INT21H
RET
DISPDI4ENDP
DISPGAO4PROCNERR;
高四位
SARAL,4
JLENUM2
NUM2:
DISPGAO4ENDP
实验四:
8255交通灯
MY8255_AEQU288H;
8255的A口地址
MY8255_BEQU289H;
8255的B口地址
MY8255_CEQU28AH;
8255的C口地址
MY8255_MODEEQU28BH;
8255的控制寄存器地址
STACK1SEGMENTSTACK
STACK1ENDS
DATASEGMENT
LADB?
;
定义数据变量
LBDB?
MOVDX,MY8255_MODE;
定义8255工作方式
MOVAL,80H;
工作方式0,A口和B口为输出
OUTDX,AL
L1:
MOVDX,MY8255_A;
写A口发出的数据,1组绿灯亮,2组红灯亮
MOVAL,24H
CALLDALLY1
MOVCX,05H
L2:
写A口发出的数据,1组黄灯亮,2组红灯亮
MOVAL,44H
CALLDALLY2
写A口发出的数据,1组黄灯灭,2组红灯亮
MOVAL,04H
OUTDX,AL
CALLDALLY2
LOOPL2
L3:
MOVAL,81H
L4:
MOVAL,82H
MOVAL,80H
LOOPL4
L5:
MOVAH,01H;
判断是否有按键按下,调用功能号1
INT16H;
ROMBIOS功能调用
JZL1;
无按键则跳回继续循环,有则退出
QUIT:
MOVAX,4C00H;
结束程序退出
;
INT21H;
DOS系统功能调用
DALLY1PROCNEAR;
软件延时子程序,东西方向红灯亮,南北方向绿灯亮
PUSHCX
PUSHDI
MOVCX,3FFH
Y1:
MOVDI,9000H
X1:
DECDI
JNZX1
LOOPY1
POPDI
POPCX
DALLY1ENDP
DALLY2PROCNEAR;
软件延时子程序,黄灯闪烁(即亮与灭)的时间间隔,
MOVCX,3FH
Y2:
X2:
JNZX2
LOOPY2
DALLY2ENDP
参考程序2:
流水灯
MOVCX,0FFFFH
MOVBL,80H
写A口发出的数据
MOVAL,BL
RORBL,1
LOOPL1
实验五:
8254一赫兹方波输出
MY8254_COUNT0EQU280H;
8254计数器0端口地址
MY8254_COUNT1EQU281H;
8254计数器1端口地址
MY8254_COUNT2EQU282H;
8254计数器2端口地址
MY8254_MODEEQU283H;
8254控制寄存器端口地址
CODE
MOVDX,MY8254_MODE;
初始化8254工作方式
MOVAL,37H;
计数器0,方式3
MOVDX,MY8254_COUNT0;
装入计数初值
MOVAL,00;
1000分频
MOVAL,10
MOVAL,77H;
计数器1,方式3
MOVDX,MY8254_COUNT1;
实验六:
AD转换(0809)
MOVDX,298H;
启动A/D转换器
DELAY:
LOOPDELAY
MOVDX,298H
INAL,DX
MOVAH,06H
MOVDL,0FFH
JESTART