logo资料库

汇编模拟 洗衣机.doc

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
DATA SEGMENT ;此处输入数据段代码 ROAT1 DB '/' ROAT2 DB '-' ROAT3 DB '\' ROAT4 DB '|' ENDL DB 1 WORD1 DB '****************please input status****************$' WORD2 DB 'A soaking, B rinse, C dehydration, P pause, E exit $' WORD3 DB '***************************************************$' WORD4 DB 'The Current Status Is A$' WORD5 DB 'The Current Status Is B$' WORD6 DB 'The Current Status Is C$' WORD7 DB 'The Current Status Is P$' DELAYTIME DW 01H;漂洗时延 DW 01H;脱水时延 SST DW ? EET DW ? LP DB 2 ;A:浸泡(禁止转动),B:漂洗(顺时针转动,然后逆时针转动) ;C:脱水(高速单方向转动),P:暂停(停止转动),E:退出程序 CONTROL DB ? DATA ENDS STACK SEGMENT ;此处输入堆栈段代码 STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX ;此处输入代码段代码 LEA DX,WORD1 MOV AH,09H;显示字符串 INT 21H ;每次输出之后光标下移一格,并且列坐标复位为0 MOV AH,03H ;取当前光标位置
INT 10H ;返回参数。DH=行号,DL=列号 INC DH ;行号加1 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 LEA DX,WORD2 MOV AH,09H INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 INC DH ;行号加1 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 LEA DX,WORD3 MOV AH,09H;显示字符串 INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 INC DH ;行号加1 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 LOP: MOV AH,01H;读取键盘状态 INT 16H JZ LOP CMP AL,'A';比较键盘输入与状态ASCII码 JZ CALA CMP AL,'B' JZ CALB CMP AL,'C' JZ CALC CMP AL,'P' JZ CALP CMP AL,'E' JZ CALE
MOV AH,10H;清除缓冲区,避免死循环 INT 16H JMP LOP CALA: LEA DX,WORD4 MOV AH,09H;显示字符串 INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 INC DH ;行号加1 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 MOV AH,10H;清除缓冲区,避免死循环 INT 16H CALL AAAA JMP LOP CALB: LEA DX,WORD5 MOV AH,09H INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 INC DH ;行号加1 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 MOV AH,10H;清除缓冲区,避免死循环 INT 16H CALL BBBB JMP LOP CALC: LEA DX,WORD6 MOV AH,09H INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 INC DH ;行号加1
MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 MOV AH,10H;清除缓冲区,避免死循环 INT 16H CALL CCCC JMP LOP CALP: LEA DX,WORD7 MOV AH,09H INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 INC DH ;行号加1 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 MOV AH,10H;清除缓冲区,避免死循环 INT 16H CALL PPPP JMP LOP CALE: MOV AH,4CH;带返回码方式的终止进程 INT 21H AAAA PROC PUSH AX PUSH BX PUSH CX PUSH DX ;浸泡状态,无转动 MOV DL,'/' MOV AH,02H;置光标位置 INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 INC DH ;行号加1 MOV DL,0; 列号复位
MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 POP DX POP CX POP BX POP AX RET AAAA ENDP PPPP PROC PUSH AX PUSH BX PUSH CX PUSH DX ;浸泡状态,无转动 MOV DL,'-' MOV AH,02H;置光标位置 INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 INC DH ;行号加1 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 POP DX POP CX POP BX POP AX RET PPPP ENDP BBBB PROC PUSH AX PUSH BX PUSH CX PUSH DX LLLP: ;朝时钟正方向慢速转动2次,之后,反向转动2次,不断循环
;读入目标字符停止 APK1: MOV LP,0002H LPT1: MOV AH,01H;漂洗时,读入中断,作为跳转 INT 16H JNZ NZP1;有字符输入转 NPC1: ;正时钟方向旋转 MOV DL,ROAT1 MOV AH,02H;置光标位置 INT 21H ;每次光标必须恢复到最初位置,保证输出字符覆盖,产生转动! MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 CALL DELAY1;延时 MOV DL,ROAT2 MOV AH,02H;置光标位置 INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 CALL DELAY1;延时 MOV DL,ROAT3 MOV AH,02H;置光标位置 INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号
CALL DELAY1;延时 MOV DL,ROAT4 MOV AH,02H;置光标位置 INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 CALL DELAY1;延时 DEC LP CMP LP,0 JZ APK2;正向两次转反向 LOOP LPT1 APK2: MOV LP,0002H LPT2: MOV AH,1;漂洗时,读入中断,作为跳转 INT 16H JNZ NZP2 NPC2: ;反时钟方向旋转 MOV DL,ROAT4 MOV AH,02H INT 21H ;每次光标必须恢复到最初位置,保证输出字符覆盖,产生转动! MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 CALL DELAY1;延时 MOV DL,ROAT3
MOV AH,02H;置光标位置 INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 CALL DELAY1;延时 MOV DL,ROAT2 MOV AH,02H;置光标位置 INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 CALL DELAY1;延时 MOV DL,ROAT1 MOV AH,02H;置光标位置 INT 21H MOV AH,03H ;取当前光标位置 INT 10H ;返回参数。DH=行号,DL=列号 MOV DL,0; 列号复位 MOV AH,02H;置光标位置 INT 10H ;入口参数。DH=行号,DL=列号 CALL DELAY1;延时 DEC LP CMP LP,0 JZ APK1;反方向两次转正向 LOOP LPT2 NZP1:
分享到:
收藏