求助!!汇编小程序:显示变色二进制数字。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助!!汇编小程序:显示变色二进制数字。相关的知识,希望对你有一定的参考价值。

编写程序,实现下述功能:
1.用系统功能调用INT 21H的0A号功能,键入任意位数(小于等于8位)的二进制数。
2.此二进制数存放在数据区的某单元中。
3.清屏后,将此二进制数显示在第10行第20列开始处,显示格式如下:
The data is
4.每隔5秒,字符改变一次颜色。

多谢多谢啦!!!
不会的同学请不要捣乱。

1Vegas Video 4.0
Vegas4.0是PC平台上用于视频编辑、音频制作、合成、字幕和编码的专业产品。它具有漂亮直观的界面和功能强大的音视频制作工具,为DV视频、音频录制、编辑和混合、流媒体内容作品和环绕声制作提供完整的集成的解决方法。
Vegas4.0为专业的多媒体制作树立一个新的标准,应用高质量切换、过滤器、片头字幕滚动和文本动画;创建复杂的合成,关键帧轨迹运动和动态全景/局部裁剪,具有不受限制的音轨和非常卓越的灵活性。利用高效计算机和大的内存,Vegas4.0从时间线提供特技和切换的实时预览,而不必渲染。使用3轮原色和合成色校正滤波器完成先进的颜色校正和场景匹配。使用新的视频示波器精确观看图像信号电平,包括波形、矢量显示、视频RGB值(RGB Parade)和频率曲线监视器。
Vegas4.0也在音频灵活性中提供终极的功能,包括不受限制的轨迹、对24 bit/96 kHz声音支持、记录输入信号监视、特技自动控制、时间压缩/扩展等等。Vegas4.0具有超过30个摄影室品质的实时DirectX特技,包括EQ、混响、噪声门限、时间压缩/扩展和延迟。Vegas4.0充分结合特效、合成、滤波器、剪裁和动态控制等多项工具,提供数字视频流媒体,成为DV视频编辑、多媒体制作和广播等较好的解决方案。

Final Cut Pro 4
这个视频剪辑软件由Premiere创始人Randy Ubillos设计,充分利用了 PowerPC G4 处理器中的“极速引擎”(Velocity Engine)处理核心,提供全新功能,例如不需要加装 PCI卡,就可以实时预览过渡与视频特技编辑、合成和特技,Matrox最近宣布将给Final Cut Pro增加实时特性的硬件加速。该软件的界面设计相当友好,按钮位置得当,具有漂亮的3D感觉,拥有标准的项目窗口及大小可变的双监视器窗口,它运用Avid系统中含有的三点编辑功能,在preferences菜单中进行所有的DV预置之后,采集视频相当爽,用软件控制摄像机,可批量采集。时间线简洁容易浏览,程序的设计者选择邻接的编辑方式,剪辑是首尾相连放置的,切换(例如淡入淡出或划变)是通过在编辑点上双击指定的,并使用控制句柄来控制效果的长度以及入和出。特技调色板具有很多切换,虽然大部分是时髦的飞行运动、卷页模式,然而,这些切换是可自定义的,它使Final Cut Pro优于只有提供少许平凡运行特技的其他的套装软件。
在Final Cut Pro中有许多项目都可以通过具体的参数来设定,这样就可以达到非常精细的调整。Final Cut Pro支持DV标准和所有的QuickTime格式,凡是QuickTime支持的媒体格式在Final Cut Pro都可以使用,这样就可以充分利用以前制作的各种格式的视频文件,还包括数不胜数的Flash动画文件。
总之,这是一个非常好的软件包,它提供较佳的编辑功能,具有像Adobe After Effects高端合成程序包中的合成特性。

Adobe Premiere 6.5
Adobe Premiere 6.5软件用于Mac和PC平台,通过对数字视频编辑处理的改进(从采集视频到编辑,直到最终的项目输出),已经设计成专业人员使用的产品。它提供内置的跨平台支持以利于DV设备的大范围的选择,增强的用户界面,新的专业编辑工具和与其他的Adobe应用软件(包括After Effects,Photoshop和GoLive)无缝的结合。目前,Premiere已经成为桌面制作人员的数字非线性编辑软件中的标准。Adobe一直保证Premiere将与变革技术的要求同步发展,随着Premiere 6.5的开发使用,Adobe已经达到这些要求,虽然大部分界面仍然原封不动,但是拥有一些可喜的变化,当打开程序时,要求用户在A/B风格编辑时间线之间选择,或选择单声道界面以利于使用。时间线的左下角也包含快速访问新的、频繁使用时间线特性的按钮,例如Track Options对话框,Toggle Snap to Edges,Toggle Edge Viewing,Toggle Shift Tracks选项和Toggle Sync模式,还可以使用窗口底部的Track Options对话框按钮打开Track Options对话框,快速添加一个或多个视频或音频轨迹。Adobe Premiere 6.5中新的工具包括专业级的音频混合器和Automate to Timeline,它们可同时从故事板或项目窗口传送剪辑序列到时间线。Adobe Premiere 6.5也具有数目众多的界面优化和自定义特性,在整个制作阶段,很容易使用Adobe Premiere的功能强大的编辑工具。
Premiere 6.5中最大的变化就是对实时软件效果的支持。现在,在Premiere中所做的一切都可以实时预览,包括字幕、色调甚至第三方效果。
Adobe意识到与苹果的数字视频功能集成是Premiere成功的关键,所以Premiere 6.5既集成iDVD,又集成DVD Studio Pro,前者是苹果的消费级DVD创作软件,后者是苹果的专业级DVD主打解决方案,可以把内容存成DV(数字视频)格式,以便在iDVD中使用,而装了DVD Studio Pro,就可以直接从Premiere的时间线以MPEG-2格式创建DVD了。时间线标记数据是可以导出的,因此也可以在DVD Studio Pro中使用章节点和单帧数据。

in:sync Speed Razor 2000
Speed Razor是Windows完全多线程非线性视频编辑和合成软件,提供全屏幕D1未压缩的品质视频、完全场渲染的NTSC或PAL。它具有不受限制的音视频层,以及DAT品质输出的高达20音频层的实时声音混合。它同差不多所有的编辑硬件一道工作,提供实时双流媒体或单流媒体配置。现在,Speed Razor有两个新的版本:Speed Razor 2000和Speed Razor 2000 X。这两个版本都增加了新的特性,例如可预设快捷键、多重二进制和导出QuickTime格式文件的功能。Speed Razor具有专业的实时视频编辑、实时音频混合和实时视频特技合成的能力。Speed Razor的主要特性包括:精确到帧的批量采集和打印到磁带、大量的快捷键、单步调整方法、不受层限制的合成、高达20个音轨的实时多通道音频混合、CD或DAT品质立体声输出和使作品发送到网站上。Speed Razor使用众多的视频采集硬件,包括Pinnacle系统Targa和DC30系列,Matrox DigiSuite,DigiSuite LE和DTV,FAST DV Master Pro,DPS Perception和Newtek Video Toaster。
除了DigiSuite先进的实时功能外,它多样的切换矩阵和灵活的过渡特技发生器都令它成为 Speed Razor 自由形式分层编辑和合成的理想的硬件平台。超高速多层合成,加上复杂的特技及移动遮挡和加速的图形转换,使其效率更高。

Ulead Media Studio Pro 6.5
它包括一个编辑程序包,它的文本和视频着色功能方面具有特别的处理强度。Media Studio Pro提供基于PC的纯MPEG-2和DV支持,它允许从录像机、电视、光盘或摄录一体机采集以及观看原始视频。使用Ligos公司的GoMotion技术,支持IEEE 1394和MPEG- 2的DV,确保高品质视频,并大大提高了生产效率。MSP的视频编辑器集合了所有的视频成分——视频、声音、动画和字幕,并改进了这些成分,增加了特技和切换,可以将视频保存为一个文件,把放它在因特网、CD-ROM或录制到录像磁带上。另一个包括MSP的最佳的小程序是视频着色,这一可动画的视频着色程序允许直接在视频序列中的任何帧上着色。对MSP的文本部分特别注意,名为CG Infinity,这个十分完整的基于矢量的图形制作程序生成令人佩服的动画字幕和活动图像。
Media Studio Pro 6.5增加了一些高级功能,包括DV场景检测、MPEG-2编辑甚至还有DVD光盘制作(这些功能大多都是Ulead的消费类产品中首先推出的),它还提供了直接捕捉MPEG-1和MPEG-2的功能,以及Vectorscope和Waveform监视器以校正色彩。

United Media On-line Express
On-Line Express 专为DigiSuite 平台设计的。On-Line Express 支持所有 DigiSuite 实时功能,包括可调关键帧的慢动作控制、复杂的背景制作、四声道输入和输出、多层合成和加速输出到磁带。On-Line Express 用户还可使用遥控搜索钮?Discreet Edit�*
拥有非线性编辑系统需要的全部编辑能力:快速剪接、滑动、拖动、替换、插入和覆盖,同时为长短不同的项目提供极好的媒体处理能力。在多处理、Windows 2000多线程环境中,使用Edit非线性编辑系统,将拥有从第一次剪接到在线全过程所需要的速度。Edit桌面系统提供实时关键帧动画的全部图形和特效能力,实时访问Combustion,它是著名的跟踪、图像稳定、绘画和颜色调整工具软件。这个Windows软件程序包根据使用的硬件不同有5个不同的特色,最好是使用Matrox DigiSuite LE和Matrox DigiSuite采集卡的选项1和选项2。现在的版本6.5增加了更多的合成特性,与DV兼容,可与Discreet公司的其他产品更好地配合使用。它是编辑未压缩的视频的最佳解决方案,编辑是实时的,非线性编辑解决方案在该桌面上完成合成、抠像和直观的特技。Edit完善的多层时间轴的垂直编辑完全使用Alpha通道,编辑复杂的关键帧,48条实时音轨混编使Edit成为广播电视、多媒体项目完美的非线性应用系统。快速时间轴编辑,先进的特效和音频;与Combustion结合, 全部这些都支持广播质量的非压缩图像。Jobnet,一个功能强大的对编辑功能的扩展,在Edit工作站之间共享项目、工作组、时间线、媒介、图形以及独立的片段数据。

AIST MoviePack
MoviePack是一个用于PC的全功能的视频编辑、合成和图像动画软件工具,具有3D特技和超速渲染的先进的核心技术。核心技术QPM和AMT形成AIST的“直接实时预览”或LPR的基础,它不落后于用户的动作,并显示所有的变化,包括切换、特技、变形、颜色校正和字幕。这个软件包是围绕开放式体系结构构建的,它允许用户扩展它,这意味着当要求改变时不必去寻找另外的新程序。作为一个开放的插件主体,MoviePack也给予自定义访问第三方厂家的插件。MoviePack大的改革是AIST称为Intelli渲染的内容,使渲染的视频和剪辑能够从时间线直接播放,只有被修改的帧被重新渲染,不再需要重新渲染整个剪辑。

Incite Studio 2.6
它是一个Windows软件包,设计在Matrox DigiSuite,DigiSuite LE和DigiSuite DTV硬件上运行。Incite提供一个易用编辑界面、多层的编辑方式,包含许多实用程序以及许多具有无限关键帧的实时特技。它是使用模拟磁带机器的最佳的系统,使用这些机器在同样的时间线上处理基于硬盘的所有剪辑。Incite 是第一款具有“混合”(将基于磁盘、磁带和现场的信号混合)编辑功能的基于 DigiSuite 的软件,还有配音录音和同时视频播放和录制。它充分利用 DigiSuite 平台的实时性能,复杂的合成可使用多层合成引擎完成,Incite 用户还可使用遥控搜索钮疡市场上最好的混合数字视频编辑器的荣誉。

Avid Xpress 4
该软件拥有编辑层的独特的方法,视频是无损的。它是可以在桌面工作站或笔记本上使用的唯一的一个软件产品,用户界面非常像Avid Media Composer。新的版本Xpress 4使用Terran Interactive(包含Media Cleaner EZ),增加了可以在任何地方提供媒体的功能,包括一套功能强大的视频编辑、特技、音频、字幕、图像、合成和协同工作的工具。
参考技术A 这里有
http://www.9wenjjt.com/media/Video/Nonlinear/2007-03-28/media_6250.html

参考资料:http://www.9wenjjt.com/media/Video/Nonlinear/2007-03-28/media_6250.html

参考技术B 推箱子小游戏
.386
.model flat,stdcall
option casemap:none

include CBox.inc
include StoreHouse.inc

.const
MAP_TOP equ 32
MAP_LEFT equ 1

.data

xBmBack dd 0
xBmWall dd 30
xBmRoad dd 60
xBmBox1 dd 90
xBmBox2 dd 120
xBmObject dd 150
xBmMan dd 180

szCaption db 'RedBox',0
szLoadError db 'Load Resource Error! ',0
szAlreadyMaxGate db 'Already Max Gate!',0
szOutOfRange db 'Out of Range!',0
szSuccessMsg db 'Your are success!!!',13,10,'Are you want to next gate?',0

FmtStr db 'val = %d',0
FmtGate db ' - No.%d',0
.data?
bmToolbar dd ?
BackDc dd ?
hBitMap dd ?

szErrorMessage db 256 dup (?)

Map db 14D*12D dup (?) ; 14 x 12 Grid
ManXPos dd ?
ManYPos dd ?
CurrGate dd ?
CurrStep dd ?

.code

start:

invoke GetModuleHandle,NULL
mov hInstance,eax
invoke GetCommandLine
mov CommandLine,eax
invoke InitCommonControls
invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
invoke ExitProcess,eax

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG

mov wc.cbSize,SIZEOF WNDCLASSEX
mov wc.style,CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc,OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,DLGWINDOWEXTRA
push hInst
pop wc.hInstance
mov wc.hbrBackground,COLOR_BTNFACE+1
mov wc.lpszMenuName,OFFSET MenuName
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx,addr wc
invoke CreateDialogParam,hInstance,addr DlgName,NULL,addr WndProc,NULL
invoke ShowWindow,hWnd,SW_SHOWNORMAL
invoke UpdateWindow,hWnd
.while TRUE
invoke GetMessage,addr msg,NULL,0,0
.BREAK .if !eax
invoke TranslateMessage,addr msg
invoke DispatchMessage,addr msg
.endw
mov eax,msg.wParam
ret

WinMain endp

WndProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
LOCAL ps :PAINTSTRUCT
LOCAL Dc:HDC

mov eax,uMsg
.if eax == WM_KEYDOWN
invoke KeyDownProc,wParam
.elseif eax==WM_INITDIALOG
push hWin
pop hWnd
invoke GetDlgItem,hWin,IDC_TBRMAIN
invoke DoToolBar,hInstance,eax
invoke LoadRes
.if eax == FALSE
invoke MessageBox,hWin,Addr szErrorMessage,\
Addr szLoadError,MB_ICONERROR
.endif
invoke InitStBar
invoke SelectGate,1
.elseif eax==WM_COMMAND
mov eax,wParam
and eax,0FFFFh
.if eax==IDM_FILE_EXIT
invoke SendMessage,hWin,WM_CLOSE,0,0
.elseif eax==IDM_HELP_ABOUT
invoke ShellAbout,hWin,addr AppName,addr AboutMsg,NULL
.elseif eax == IDC_TBB_NEW
invoke SelectGate,CurrGate
.elseif eax == IDC_TBB_PREV
mov eax, CurrGate
dec eax
invoke SelectGate,eax
.elseif eax == IDC_TBB_NEXT
invoke NextGate
.elseif eax == IDC_TBB_ABOUT
invoke ShellAbout,hWnd,Addr AppName,Addr AboutMsg,NULL
.endif
.elseif eax==WM_PAINT
invoke BeginPaint,hWin,Addr ps
mov Dc,eax
invoke WMPaint,Dc
invoke EndPaint,hWin,Addr ps
.elseif eax==WM_CLOSE
invoke DestroyWindow,hWin
.elseif uMsg==WM_DESTROY
invoke FreeRes
invoke PostQuitMessage,NULL
.else
invoke DefWindowProc,hWin,uMsg,wParam,lParam
ret
.endif
xor eax,eax
ret

WndProc endp

DoToolBar proc hInst:DWORD,hToolBar:HWND
LOCAL tbab:TBADDBITMAP

;Set toolbar struct size
invoke SendMessage,hToolBar,TB_BUTTONSTRUCTSIZE,sizeof TBBUTTON,0
;Set toolbar bitmap
;push HINST_COMMCTRL
invoke LoadBitmap,hInstance,BM_TOOLBAR
mov bmToolbar,eax
;push eax
;pop tbab.hInst
;mov tbab.nID,IDB_VIEW_LARGE_COLOR ;IDB_STD_SMALL_COLOR
mov tbab.hInst,NULL
mov tbab.nID ,eax
invoke SendMessage,hToolBar,TB_ADDBITMAP,15,addr tbab
;Set toolbar buttons
invoke SendMessage,hToolBar,TB_ADDBUTTONS,ntbrbtns,addr tbrbtns
mov eax,hToolBar
ret

DoToolBar endp

;-- Load Bitmap from Resource and return true or false ---
LoadRes proc
LOCAL Dc:DWORD

invoke lstrcpy,Addr szErrorMessage,Addr szLoadError
invoke GetDC,hWnd
mov Dc,eax
invoke CreateCompatibleDC,Dc
mov BackDc,eax

invoke LoadBitmap,hInstance,BM_MAIN
.if eax == 0
mov eax ,FALSE
jmp @@ExitLoad
.endif
mov hBitMap,eax
invoke SelectObject,BackDc,hBitMap
mov eax ,TRUE
@@ExitLoad:

ret

LoadRes endp

;-- Free all Resource ---
FreeRes proc
invoke DeleteObject,hBitMap
invoke DeleteDC,BackDc
invoke DeleteObject,bmToolbar
ret
FreeRes endp

NextGate proc

mov eax ,CurrGate
.if eax < MAX_GATES
inc CurrGate
invoke SelectGate,CurrGate
.else
invoke MessageBox,hWnd,Addr szAlreadyMaxGate,Addr szCaption,MB_ICONINFORMATION
.endif
ret

NextGate endp

;--- Select game Gate
SelectGate proc iGate :DWORD
LOCAL szTmp1[256]:BYTE
LOCAL szTmp2[256]:BYTE

mov eax ,iGate
.if eax >MAX_GATES || eax < 1
invoke MessageBox,hWnd,Addr szOutOfRange,Addr szCaption,MB_ICONERROR
ret
.endif
mov CurrGate ,eax
mov eax ,14D*12D
mov ebx,iGate
dec ebx
mul bx

push esi
lea esi,BoxMaps
add esi,eax
lea edi,Map
mov ecx,14D*12D
rep movsb

mov CurrStep , 0
mov ecx ,0
lea esi,Map
@@1: ;-- found Man Pos
mov ebx,ecx
mov al, byte ptr [esi][ebx]
cmp al,MAP_MAN
jz @@2
inc ecx
cmp ecx,14D*12D
jnz @@1
@@2:
mov al ,MAP_ROAD
mov byte ptr [esi][ebx],al

; Pos to x,y
mov edx ,0
mov eax,ecx
mov ebx,14D
div ebx
mov ManXPos,edx
mov ManYPos,eax
pop esi
invoke Repaint
invoke wsprintf,Addr szTmp1,Addr FmtGate,CurrGate
invoke lstrcpy,Addr szTmp2,Addr szCaption
invoke lstrcat,Addr szTmp2,Addr szTmp1
invoke SendMessage,hWnd,WM_SETTEXT,0,Addr szTmp2
ret

SelectGate endp

WMPaint proc Dc:DWORD
LOCAL i:DWORD
LOCAL j:DWORD
LOCAL x:DWORD
LOCAL y:DWORD
LOCAL nPos :DWORD

mov x ,MAP_LEFT
mov y ,MAP_TOP
mov i ,1
mov j ,1
lea esi ,Map
@@i:
mov x ,MAP_LEFT
mov j ,1
@@j:
;Calc nPos ,nPos := (i-1) * 14 + (j-1)
mov eax,i
dec eax
mov ebx,14D
mul bx
add eax,j
dec eax
mov ebx,eax
mov al,[esi][ebx]
.if al == MAP_BACK
invoke BitBlt,Dc,x,y,30D,30D,BackDc,xBmBack,0,SRCCOPY
.elseif al == MAP_WALL
invoke BitBlt,Dc,x,y,30D,30D,BackDc,xBmWall,0,SRCCOPY
.elseif al == MAP_ROAD
invoke BitBlt,Dc,x,y,30D,30D,BackDc,xBmRoad,0,SRCCOPY
.elseif al == MAP_BOX1
invoke BitBlt,Dc,x,y,30D,30D,BackDc,xBmBox1,0,SRCCOPY
.elseif al == MAP_BOX2
invoke BitBlt,Dc,x,y,30D,30D,BackDc,xBmBox2,0,SRCCOPY
.elseif al == MAP_OBJECT
invoke BitBlt,Dc,x,y,30D,30D,BackDc,xBmObject,0,SRCCOPY
.else ; eax == MAP_MAN
invoke BitBlt,Dc,x,y,30D,30D,BackDc,xBmMan,0,SRCCOPY
.endif

add x,30D
inc j
cmp j ,15D
jb @@j ; if j <= 14

inc i
add y,30D
cmp i,13 ;if i <= 12
jb @@i

mov edx,0
mov eax,ManXPos
mov ebx,30D
mul bx
add eax,MAP_LEFT
mov x,eax

mov edx ,0
mov eax,ManYPos
mov ebx,30D
mul bx
add eax,MAP_TOP
mov y,eax

invoke BitBlt,Dc,x,y,30D,30D,BackDc,xBmMan,0,SRCCOPY

ret
WMPaint endp

KeyDownProc proc wParam:DWORD
mov eax ,wParam
.if eax == VK_UP
invoke ManMove,VK_UP
.elseif eax == VK_DOWN
invoke ManMove,VK_DOWN
.elseif eax == VK_LEFT
invoke ManMove,VK_LEFT
.elseif eax == VK_RIGHT
invoke ManMove ,VK_RIGHT
.else
ret
.endif

invoke Check
.if eax == TRUE
invoke MessageBox,hWnd,Addr szSuccessMsg,Addr szCaption,MB_ICONINFORMATION or MB_OKCANCEL
.if eax == IDOK
invoke NextGate
.endif
.endif
ret

KeyDownProc endp

ManMove proc vKey :DWORD
LOCAL NewX:DWORD
LOCAL NewY:DWORD
LOCAL NewX2 :DWORD
LOCAL NewY2 :DWORD
LOCAL M1 :byte
LOCAL M2 :byte
LOCAL nPos1 :DWORD
LOCAL nPos2 :DWORD

push esi

mov eax,ManXPos
mov NewX,eax
mov NewX2,eax
mov eax,ManYPos
mov NewY,eax
mov NewY2,eax

mov eax ,vKey
.if eax == VK_UP
dec NewY
dec NewY2
dec NewY2
.elseif eax == VK_DOWN
inc NewY
inc NewY2
inc NewY2
.elseif eax == VK_LEFT
dec NewX
dec NewX2
dec NewX2
.elseif eax == VK_RIGHT
inc NewX
inc NewX2
inc NewX2
.else
ret
.endif

mov esi ,offset Map
; Pos = y*14 + x
; Get M1
mov eax,NewY
mov ebx,14D
mul bx
add eax,NewX
mov ebx,eax
mov nPos1,eax
mov al ,[esi][ebx]
mov M1,al
; Get M2
mov eax,NewY2
mov ebx,14D
mul bx
add eax,NewX2
mov ebx,eax
mov nPos2,eax
mov al ,[esi][ebx]
mov M2,al

mov al,M1
.if (al == MAP_ROAD || al == MAP_OBJECT )
push NewX
pop ManXPos
push NewY
pop ManYPos
.elseif al == MAP_BOX1 ; push box
mov al ,M2
.if al == MAP_ROAD ; push ok
mov ebx,nPos2
mov al,MAP_BOX1
mov [esi][ebx],al
mov ebx,nPos1
mov al,MAP_ROAD
mov [esi][ebx],al
push NewX
pop ManXPos
push NewY
pop ManYPos
.elseif al == MAP_OBJECT
mov ebx,nPos2
mov al,MAP_BOX2
mov [esi][ebx],al
mov ebx,nPos1
mov al,MAP_ROAD
mov [esi][ebx],al
push NewX
pop ManXPos
push NewY
pop ManYPos
.endif
.elseif al == MAP_BOX2
mov al,M2
.if al == MAP_ROAD
mov ebx,nPos2
mov al,MAP_BOX1
mov [esi][ebx],al
mov ebx,nPos1
mov al,MAP_OBJECT
mov [esi][ebx],al
push NewX
pop ManXPos
push NewY
pop ManYPos
.elseif al == MAP_OBJECT
mov ebx,nPos2
mov al,MAP_BOX2
mov [esi][ebx],al
mov ebx,nPos1
mov al,MAP_OBJECT
mov [esi][ebx],al
push NewX
pop ManXPos
push NewY
pop ManYPos
.endif
.else

.endif

invoke Repaint
pop esi
ret

ManMove endp

XYtoPos proc x:DWORD,y:DWORD
; pos = y *14 + x Zero-Based
mov eax, y
mov ebx, 14D
mul bx
add eax ,x
ret
XYtoPos endp

Repaint proc
LOCAL R:RECT

invoke GetClientRect,hWnd,Addr R
invoke InvalidateRect,hWnd,Addr R,0
ret

Repaint endp

Check proc
; Check Success and return true or false
LOCAL Result :DWORD
push esi
push TRUE
pop Result
lea esi,Map
mov ecx, 14D*12D
mov ebx ,0
@@1:
mov al ,[esi][ebx]
inc ebx
cmp al,MAP_OBJECT
jz @@2
dec ecx
jnz @@1
jmp @@ExitCheck
@@2:
push FALSE
pop Result
@@ExitCheck:
mov eax,Result
pop esi
ret

Check endp

InitStBar proc
LOCAL StbarHandle :DWORD
invoke GetDlgItem,hWnd,IDC_SBR1
mov StbarHandle,eax
invoke SendMessage,StbarHandle,SB_SIMPLE,1,0
;invoke SendMessage,StbarHandle,SB_SETPARTS,1,150
ret

InitStBar endp

ShowMessage proc Val:DWORD
push eax
invoke wsprintf,Addr szErrorMessage,Addr FmtStr,Val
invoke MessageBox,hWnd,Addr szErrorMessage,Addr szCaption,MB_ICONINFORMATION
pop eax
ret

ShowMessage endp

end start本回答被提问者采纳

以上是关于求助!!汇编小程序:显示变色二进制数字。的主要内容,如果未能解决你的问题,请参考以下文章

汇编十道小题

十进制100怎样转换成ascii码?

急急!汇编高手请进!

汇编语言,以10进制的方式显示数字

汇编 两个十进制数的加法 帮我做个流程图就够了!

如何在汇编中将两个十六进制 128 位数字相乘