电梯模拟汇编程序Word文档下载推荐.docx

上传人:b****8 文档编号:22916987 上传时间:2023-02-06 格式:DOCX 页数:20 大小:18.10KB
下载 相关 举报
电梯模拟汇编程序Word文档下载推荐.docx_第1页
第1页 / 共20页
电梯模拟汇编程序Word文档下载推荐.docx_第2页
第2页 / 共20页
电梯模拟汇编程序Word文档下载推荐.docx_第3页
第3页 / 共20页
电梯模拟汇编程序Word文档下载推荐.docx_第4页
第4页 / 共20页
电梯模拟汇编程序Word文档下载推荐.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

电梯模拟汇编程序Word文档下载推荐.docx

《电梯模拟汇编程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《电梯模拟汇编程序Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。

电梯模拟汇编程序Word文档下载推荐.docx

LOCALBH2;

MOVCX,CX1

MOVDX,CY1

BH2:

MOVAH,0CH

AL=(00--0FH)共16种颜色.

INCDX

CMPDX,CY2

JNZBH2

--------------------------------------

UPMACRON,DX1;

小方块上升的宏

LOCALUPa,UPb;

MOVAL,N;

小方块从N-1层上升至N层

MOVCH,30;

小方块上升一层,并且将下一层的小方块清除

MULCH

MOVDX,430

SUBDX,AX

MOV[DZ],DX

ADDDX,20

MOVDX1,DX

UPa:

HENG170,[DZ],05H,190;

画小方块

INC[DZ]

MOVAX,DX1

CMP[DZ],AX

JNZUPa

ADDDX,11

UPb:

HENG170,[DZ],00H,190;

JNZUPb

---------------------------------------------

DOWNMACRON,DX1;

小方块下降的宏

LOCALDNa,DNb;

小方块从N+1层下降至N层

小方块下降一层,并且将上一层的小方块清除

DNa:

JNZDNa

SUBDX,49

DNb:

JNZDNb

INITMACRON,DX1;

画初始小方块的宏

LOCALBEG;

小方块最初停在第N层,表示电梯最初停在第N层

MOVCH,30

BEG:

JNZBEG

-------------------------------------------

CLOSEMACRO;

画电梯关门状态的宏

LOCALCC;

MOV[DZ],220

CC:

HENG210,[DZ],09H,370;

电梯关门

CMP[DZ],420

JNZCC

SHU291,220,02H,420;

电梯大门缝隙

SHU290,220,02H,420

SHU289,220,02H,420

HALFMACRO;

画电梯半开门状态的宏

LOCALHA;

MOV[DZ],221

HA:

HENG210,[DZ],09H,250;

电梯半开门

HENG252,[DZ],07H,328

HENG330,[DZ],09H,370

JNZHA

SHU251,220,02H,420;

SHU329,220,02H,420

FULLMACRO;

画电梯全开门状态的宏

LOCALF;

F:

HENG210,[DZ],09H,215;

电梯全开门

HENG217,[DZ],07H,363

HENG365,[DZ],09H,370

JNZF

SHU216,220,02H,420;

SHU364,220,02H,420

DATASEGMENT

MESSDB'

elevatormodel'

0AH,0DH,'

$'

ME1DB'

pressanykeytoreturnDOS.'

0AH,0DH,'

当使用者进行非正常操作时,提示使用者手动返回DOS

ME2DB'

nowtheflooris:

'

提示当前楼层

ME3DB'

direction:

'

ME4DB'

inputthefloor(1-8F)(suchas1-3-4-1):

$'

ME5DB'

author:

WangHuiTing'

输出多个空格键是为了清空上一次的输入

ME6DB'

data:

2011-12-16'

ME7DB'

TO:

提示电梯下一站要停的楼层

ME8DB'

upordownafloor,'

提示使用者用上、下键不连续控制电梯

ME9DB'

onlyvailablewhenelevator'

ME10DB'

stop(usewors)'

ME11DB'

~nowvailable'

ME12DB'

IBUFFDB0FFH,0,255DUP(0)

DIDASEQU18

DZDW0

TIMESDW0,0

NUMDB0

NUM1DB0

COUNTDB0

COUNT1DB0

DX1DW3

DX2DW6

DATAENDS

---------------------------------------

STACSEGMENT

STADW100DUP(0);

堆栈段

TOPDW?

STACENDS

---------------------------------------

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA;

ES:

DATA,SS:

DATA

DELAY1SPROCNEAR;

延时1S的子函数

PUSHDX

PUSHCX

XORAX,AX

INT1AH

MOVTIMES,DX

MOVTIMES[2],CX

read_time:

XORAX,AX

SUBDX,TIMES

SBBCX,TIMES[2]

CMPDX,DIDAS

JBread_time

POPCX

POPDX

RET

DELAY1SENDP

STARTPROCFAR

MOVAX,DATA;

主程序

MOVDS,AX

MOVAX,STAC

MOVSS,AX

MOVAX,DATA

MOVES,AX

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHSI

PUSHDI

MOVCX,0

MOVDX,2479H

MOVBH,7

MOVAX,0601H

MOVAX,0012H;

置图形显示方式

640列*480行,16色.

MOVDX,0421H;

显示MESS

GB

MOVDX,OFFSETMESS

MOVAH,9

INT21H

MOVDX,0432H;

显示ME5

MOVDX,OFFSETME5

INT21H

MOVDX,0532H;

显示ME6

MOVDX,OFFSETME6

MOVDX,0

MOV[DZ],100

SB:

HENG220,[DZ],03,420;

显示栏

CMP[DZ],150

JNZSB

HENG220,99,0AH,420;

显示栏边框

HENG220,151,0AH,420

SHU220,99,0AH,151

SHU420,99,0AH,151

CLOSE;

电梯大门处于关闭状态

HENG210,220,02H,370;

电梯大门缝隙边框

HENG210,420,02H,370

SHU210,220,02H,420

SHU370,220,02H,420

HENG209,219,02H,371;

加粗边框

SHU209,220,02H,420

SHU371,220,02H,420

MOV[DZ],219

MOVDX1,210

MOVDX2,370

SB1:

HENGDX1,[DZ],03H,DX2;

三维电梯上侧面

DEC[DZ]

INCDX1

INCDX2

CMP[DZ],180

JNZSB1

MOV[DZ],371

MOVDX1,220

MOVDX2,420

SB2:

SHU[DZ],DX1,03H,DX2;

三维电梯右侧面

DECDX1

DECDX2

CMP[DZ],410

JNZSB2

MOV[DZ],420

SB3:

HENG70,[DZ],02H,480;

画地平线

CMP[DZ],425

JNZSB3

MOV[DZ],421

SB4:

HENG160,[DZ],04H,200;

小方块运行在框架内

SUB[DZ],30

CMP[DZ],151

JNZSB4

SHU160,180,04H,420

SHU200,180,04H,420

MOVDX,071DH

MOVDX,OFFSETME2;

显示ME2

MOVDX,081DH

MOVDX,OFFSETME3;

显示ME3

MOVDX,082DH

MOVDX,OFFSETME7;

显示ME7

SA1s:

MOVDX,0202H;

显示ME4

MOVDX,OFFSETME4

MOVDX,0229H

MOVDX,OFFSETIBUFF;

输入并显示字符串

MOVAH,10

MOVDX,0402H;

MOVDX,OFFSETME8;

显示ME8

MOVDX,0502H

MOVDX,OFFSETME9;

显示ME9

MOVDX,0602H

MOVDX,OFFSETME10;

显示ME10

SA1:

MOVAL,IBUFF+1

MOVCOUNT,AL;

记录输入的字符个数

MOVBP,2

MOVAL,IBUFF[BP]

CMPAL,30H;

将首字符与1BH(ESCASCII码)比较,若相等则返回DOS,这里由于汇编软件的原因改为与0的ASCII码比较

JZWA1

避免当使用者出入其它键是程序进入死循环

JBWA0

CMPAL,38H

JAWA0

ANDAL,0FH

MOVNUM,AL

INITNUM,DX1

MOVDX,072FH

MOVDL,NUM;

显示电梯第一站楼层数

ORDL,30H;

将数字转换为字符

MOVAH,2

CALLDELAY1S

SA1a:

ADDBP,2

MOVAL,IBUFF[BP]

ANDAL,0FH;

将字符转换为数字

MOVNUM1,AL

MOVDX,0830H

MOVDL,IBUFF[BP];

显示电梯下一站要停的楼层数

SA1b:

MOVAL,NUM1;

下一站要去的楼层和当前所在楼层相比较

CMPAL,NUM;

若下一站楼层大于当前楼层,则小方块上升

JASA1c;

若下一站楼层小于当前楼层,则小方块下降

若下一站楼层等于当前楼层,则小方块不动

这里有2次比较

JZSA1d;

到达所在楼层后停止运动

DECNUM

DOWNNUM,DX1;

电梯下降

MOVDX,0829H

MOVDL,19H;

显示下箭头

显示当前楼层数

CALLDELAY1S;

小方块在每一层停止1S可让人更直观地看清电梯的运行状况

JMPSA1b

SA1c:

INCNUM

UPNUM,DX1;

电梯上升

MOVDX,0829H

MOVDL,18H;

显示上箭头

CALLDELAY1S

JMPSA1b

SA1d:

HALF;

电梯在指定楼层停下,大门依次从闭合-半开门-全开门-半开门-全开门

FULL

HALF

CLOSE

MOVDX,0702H

MOVDX,OFFSETME11;

显示ME11,表明现在可以进行不连续控制

read_time1:

CLC

MOVAH,1;

输入上、下键

INT16H

JNZget

JBread_time1

JMPshow1

get:

CMPAL,'

w'

JZups1

s'

JZdowns1

JMPSA1e

ups1:

电梯上升一层

JMPshow

downs1:

show:

INT21H;

清空键盘缓冲区

show1:

MOVDX,OFFSETME12;

显示ME12,表明现在不可以进行不连续控制

SA1e:

MOVAL,COUNT;

电梯向下一站运行

CBW

CMPBP,AX

JBSA1a

JMPSA1s;

电梯重新进行新的一轮的运行

WA0:

MOVDX,1834H;

显示ME1

MOVDX,OFFSETME1

MOVDL,0FFH

MOVAH,6

JZWA0

MOVCX,0

CLSS

WA1:

MOVAX,4C00H

返回DOS.

MOVAH,02H

恢复文本显示方式.

POPDI

POPSI

POPBX

POPAX

STARTENDP

CODEENDS

ENDSTART

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1