桂电微机实验a所用程序.docx
- 文档编号:29816837
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:18
- 大小:18.06KB
桂电微机实验a所用程序.docx
《桂电微机实验a所用程序.docx》由会员分享,可在线阅读,更多相关《桂电微机实验a所用程序.docx(18页珍藏版)》请在冰豆网上搜索。
桂电微机实验a所用程序
1,字符串小于6时,六分频
DATASEGMENT
BUFDB20
DB?
DB20DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,
START:
MOVAX,DATA
MOVDS,AX
MOVAH,0AH
LEADX,BUF;键盘输入到缓存区
INT21H
LEASI,BUF
MOVAL,[SI+1]
CMPAL,6
JAEL
MOVAL,36H
MOVDX,283H
OUTDX,AL
MOVAX,1000
MOVDX,280H
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVAL,76H
MOVDX,283H
OUTDX,AL
MOVAX,167
MOVDX,281H
OUTDX,AL
MOVAL,AH
OUTDX,AL
L:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2,8255显示第一个字母的ASSII码X
;输入一串字符然后用8255显示第一个字母的ASSII码用开关来控制显示和不显示
DATASEGMENT
BUFDB20;最大输入字符串字符数
DB?
;实际输入字符数
DB20DUP(?
);字符缓存,从这里开始存放输入的字符串,偏移地址为2
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
MOVDX,28BH;8255配置
MOVAL,80H;方式0,C口输出
OUTDX,AL;配置成功
MOVDX,OFFSETBUF
MOVAH,0AH;0A号功能输入一串字符
INT21H
LEABX,BUF
MOVDX,28AH
MOVAL,[BX+2];前面说了第一个字符的偏移地址为2
OUTDX,AL
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
3、8255灯闪烁
;37dengliang
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,28BH;初始化
MOVAL,80H
OUTDX,AL
MOVCX,10;循环次数
SS1:
MOVDX,28AH;A端口
MOVAL,88H;全部亮
OUTDX,AL
CALLDELAY;调用延时
MOVDX,28AH;C口
MOVAL,0H
OUTDX,AL
CALLDELAY
LOOPSS1
MOVAH,4CH
INT21H
DELAYPROCNEAR
PUSHCX
PUSHDI
MOVCX,1000
Y1:
MOVDI,9000
X1:
DECDI
JNZX1
LOOPY1
POPDI
POPCX
RET
DELAYENDP
CODEENDS
ENDSTART
4、a+b显示结果
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,28BH;8255控制寄存器设置
MOVAL,80H;配置为A口C口均为方式0的输出模式,实验中你用哪个口都OK
OUTDX,AL;实现配置
MOVAH,01H;DOS01号功能输入数字1
INT21H
SUBAL,30H;ASCII码转成实际数字
MOVBL,AL;将输入结果暂存在BL中,因为后面输入还用到AL
MOVAH,01H;输入数字2
INT21H
SUBAL,30H
ADDBL,AL;两数相加结果存放在BL中
MOVDX,28AH;A口地址
MOVAL,BL
OUTDX,AL;数据送到8255A口进行显示
MOVAH,02H;输出回车
MOVDL,0DH
INT21H
MOVAH,02H;换行,为屏幕输出结果准备下
MOVDL,0AH
INT21H
CMPBL,10;判断和是否大于10
JBDISP
SUBBL,10;大于10的数减去10就只剩下了个位
MOVAH,02H;02号功能输出十位1
MOVDL,1+30H
INT21H
DISP:
ADDBL,30H
MOVAH,02H;02号功能输出个位
MOVDL,BL
INT21H
MOVAX,4C00H
INT21H;返回到DOS
CODEENDS
ENDSTART
5、X大于等于y减6
;当X>=Y-6时,用8255使LED灯闪烁。
CODESEGMENT
ASSUMECS:
CODE
MAIN:
MOVDX,28BH;8255初始化
MOVAL,80H
OUTDX,AL
MOVAH,1;输入第一个字符Y
INT21H
MOVBL,AL;暂存第一个字符在BL
SUBBL,6
MOVAH,1;输入第二个字符X
INT21H
CMPAL,BL;比较第一个字符和第二个字符的大小
JBSTOP;如果小于,则跳转
MOVCX,100
LED:
MOVAL,0FFH;10000000PA7输出高电平
MOVDX,28AH
OUTDX,AL
CALLDELAY
MOVAL,00H;10000000PA7输出低电平
MOVDX,28AH
OUTDX,AL
CALLDELAY
JMPLED;用loop野性
STOP:
MOVAX,4C00H
INT21H
DELAYPROCNEAR
PUSHCX
PUSHDI
MOVCX,100H
Y1:
MOVDI,1000H
X1:
DECDI
JNZX1
LOOPY1
POPDI
POPCX
RET
DELAYENDP
CODEENDS
ENDMAIN
6,X小于yokX
;用键盘输入两个字符XY,若X CODESEGMENT ASSUMECS: CODE MAIN: MOVDX,28BH;8255初始化 MOVAL,80H OUTDX,AL MOVAH,01H;输入第一个字符 INT21H MOVBL,AL;暂存第一个字符在BL MOVAH,01H;输入第二个字符 INT21H CMPBL,AL;比较第一个字符和第二个字符的大小 JBBELOW;如果小于,则跳转 MOVAL,00H;如果大于,则熄灭LED MOVDX,28AH OUTDX,AL JMPEXIT BELOW: MOVAL,0FFH;quan点亮LED MOVDX,28AH;C口 OUTDX,AL EXIT: MOVAH,4CH INT21H CODEENDS ENDMAIN 7、流水灯 CODESEGMENT ASSUMECS: CODE START: MOVDX,28AH MOVAL,80H OUTDX,AL MOVCX,00FFH MOVBL,80H L1: MOVDX,28AH MOVAL,BL OUTDX,AL CALLDELAY ROLBL,1 LOOPL1 QUIT: MOVAH,4CH INT21H DELAYPROCNEAR PUSHCX PUSHDI MOVCX,1000 Y1: MOVDI,9000 X1: DECDI JNZX1 LOOPY1 POPDI POPCX RET DELAYENDP CODEENDS ENDSTART 8、输入两个字符相同X DATASEGMENT STRIDB0DH,0AH,'NOMATCH$' DATAENDS CODESEGMENT ASSUMEDS: DATA,CS: CODE START: MOVAX,DATA MOVDS,AX MOVDX,28BH;8255控制寄存器设置 MOVAL,80H;A口、C口均为方式0的输出模式,实验中你用哪个口都OK OUTDX,AL;实现配置 MOVAH,01H;输入第一个字符 INT21H MOVBL,AL;结果暂存在BL中 MOVAH,01H;输入第二个字符 INT21H CMPBL,AL;两个字符相比较 JZMATCH;相等则用8255输出到LED ;如果不相等则输出下面的字符串 MOVDX,OFFSETSTRI;获取NOMATCH字符的偏移地址 MOVAH,09H;调用09号功能输出字符串 INT21H JMPENDC MATCH: MOVDX,28AH MOVAL,BL OUTDX,AL ;使用8255A口输出 ENDC: MOVAH,4CH INT21H CODEENDS ENDSTART 9、输入量字符小的屏幕显示大的led ;键盘输入两个数字,比较大小,小的再屏幕显示,大的通过8255用发光二极管显示。 CODESEGMENT ASSUMECS: CODE START: MOVDX,28BH;8255配置 MOVAL,80H;A口输出模式 OUTDX,AL;配置完成 MOVAH,01H;01号功能输入第一个数字 INT21H MOVBH,AL;结果暂存 MOVAH,01H;输入第二个数字 INT21H MOVBL,AL;结果暂存 CMPBL,BH;两数比较 JBBELOW ;如果BL不小于BH,则BL,BH交换 MOVAL,BL MOVBL,BH MOVBH,AL BELOW: MOVAH,02H;显示回车换行为输出结果准备 MOVDL,0DH INT21H MOVAH,02H MOVDL,0AH INT21H MOVAH,02H;02功能显示小值 MOVDL,BL INT21H SUBBH,30H;输出实际大小 MOVDX,28AH;用A口输出大的值 MOVAL,BH OUTDX,AL;输出 MOVAX,4C00H INT21H CODEENDS ENDSTART 10、小写转大写屏蔽数字 DATASEGMENT MSG1DB'INPUTSTRING: $' MSG2DB'OUTPUTSTRING: $' MSG3DB0DH,0AH,'$';或MSG3DB13,10,'$'回车换行 BUFDB30 DB? DB30DUP(? ) DATAENDS CODESEGMENT ASSUMECS: CODE,DS: DATA START: MOVAX,DATA MOVDS,AX;数据段初始化 LEADX,MSG1;或MOVDX,OFFSETMSG1,提示输入字符 MOVAH,09H;字符串输出 INT21H MOVDX,OFFSETBUF;或LEADX,BUF MOVAH,0AH;字符串输入 INT21H LEADX,MSG3;回车换行 MOVAH,09H INT21H LEADX,MSG2;提示输出结果 MOVAH,09H INT21H MOVSI,OFFSETBUF;LEASI,BUFSI指针取字符 MOVCL,[SI+1];SI+1存的是字符串实际长度 MOVCH,00H CMPCX,00H;目标-源,结果不回送,只根据运算结果置标志位 JZSTOP;结果为0(ZF=1)跳转,判断字符串长度是不是0 ADDSI,2;实际存放字符串的开始 NEXT: MOVAL,BYTEPTR[SI];字符类型判断 CMPAL,30H;和a比较 JBNEXT1;低于(CF=1)跳转 CMPAL,39H;和z比较 JANEXT1;高于跳转 INCSI LOOPNEXT NEXT1: CMPAL,61H;和a比较 JBNEPA;低于(CF=1)跳转 CMPAL,7AH;和z比较 JANEPA;高于跳转 SUBAL,20H;小写转换成大写 MOVBYTEPTR[SI],AL NEPA: MOVAH,02H MOVDL,[SI];输出结果 INT21H INCSI LOOPNEXT STOP: MOVAH,4CH;返回DOS INT21H CODEENDS ENDSTART 11、去缔几个字符位数字 DATASEGMENT STRING1DB'Pressanykeysplease: ',10,13,24H STRING2DB13,10,'Thestringis: ',10,13,24H BUF1DB20 DB? DB20DUP(? ) DATAENDS CODESEGMENT ASSUMECS: CODE,DS: DATA,ES: DATA START: MOVAX,DATA MOVDS,AX L: MOVAH,09H;输入提示 LEADX,STRING1 INT21H MOVAH,0AH LEADX,BUF1;键盘输入到缓存区 INT21H MOVAH,09H;输出提示 LEADX,STRING2 INT21H LEASI,BUF1;键盘输入缓存区 ;MOVCL,[SI];取出实际输入个数 ;MOVCH,0 L3: MOVAH,02H;显示 MOVDL,[SI+3];显示第2个字符 INT21H INCSI CMPDL,30H JBEEXIT CMPDL,39H JAEEXIT MOVDX,28BH MOVAL,80H OUTDX,AL MOVCX,00FFH MOVBL,80H LL: MOVDX,28AH MOVAL,BL OUTDX,AL CALLDELAY RORBL,1 LOOPLL QUIT: MOVAH,4CH INT21H DELAYPROCNEAR PUSHCX PUSHDI MOVCX,1000 Y1: MOVDI,9000 X1: DECDI JNZX1 LOOPY1 POPDI POPCX RET DELAYENDP EXIT: MOVAH,4CH INT21H CODEENDS ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 实验 所用 程序