471字节俄罗斯方块汇编程序源代码及详细注释(2)

发布时间:2021-06-05

汇编源代码

循环等待次数
jae short @wait     ;确认cl不小于40
mov cl,40h
@wait: call @dispb       ;显示当前新方块
push cx         ;进入等待状态
xor cx,cx        ;cx=等待时间(微秒)低字
mov dx,1000       ;dx=等待时间(微秒)高字
mov ah,86h
int 15h         ;等待
pop cx         ;退出等待状态
@t4:  mov ah,1
int 16h         ;判断键盘缓冲区是否有字符
jz short @loop     ;没有按键则跳出键盘处理部分
xor ax,ax
call @disp       ;清除新方块的显示
int 16h         ;读取键盘缓冲区字符=>ah
mov al,ah        ;al=ah
cmp al,$up       ;判断是否是上方向键
jnz short @k1      ;不是则跳转
push bp         ;保存当前新方块的摆放形状
movzx bp,cs:[bp+bkv]  ;改变新方块的摆放形状
call @isok       ;判断是否能放置
jz short @loop_    ;能放置则跳出键盘处理部分
pop bp         ;不能放置则恢复新方块原来形状
loop @wait       ;继续下一次等待
@k1:  push bx         ;保存当前新方块的位置
cmp al,$left      ;判断是否是左方向键
jnz short @k2      ;不是则跳转
dec bx         ;新方块左移一个位置(2个字节)
dec bx
@test: call @isok       ;判断是否能放置
jz short @loop_    ;能放置则跳出键盘处理部分
pop bx         ;不能放置则恢复新方块原来位置
loop @wait       ;继续下一次等待
@k2:  cmp al,$right      ;判断是否是右方向键
jnz short @k3      ;不是则跳转
inc bx         ;新方块右移一个位置(2个字节)
inc bx
jmp short @test     ;剩下的处理同"左方向键"
@k3:  pop bx         ;恢复新方块原来位置
cmp al,1        ;判断是否是ESC键
jz short @end     ;如果是则跳转到退出程序段
jmp short @ok      ;如果是其他按键则跳出延时状态
@loop_: pop ax         ;清除保存的新方块位置
@loop: loop @wait       ;继续下一次等待
@ok:  push ax         ;保存按键扫描码
xor ax,ax        ;延时过后进入方块下落部分
call @disp       ;清除新方块的显示
add b
x,2*40       ;新方块下移一个位置(2个字节)
call @isok       ;判断是否能放置
pop ax         ;恢复按键扫描码
jnz short @down     ;如果不能放置新方块则跳转
cmp al,$down      ;判断是

471字节俄罗斯方块汇编程序源代码及详细注释(2).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219