📄 tileg.asm
字号:
.model small.stack 100h.data count db 8h Colour db 0ceh blankTopRow db 0h number9 db "<-------->" db "|* *|" db "|* *|" db "|* *|" db "|* *|" db "|* *|" db "|* *|" db "<-------->" number9Row db 10h number9Col db 14h number1 db "<-------->" db "|//////#/|" db "|/////#//|" db "|////#///|" db "|///#////|" db "|//#/////|" db "|/#//////|" db "<-------->" number1col db 0h number1row db 0h number2 db "<-------->" db "|////////|" db "|//#####/|" db "|/#////#/|" db "|/////#//|" db "|///#////|" db "|/######/|" db "<-------->" number2col db 0h number2row db 8h number3 db"<-------->" db "|/#####//|" db "|/////#//|" db "|/####///|" db "|/////#//|" db "|/////#//|" db "|/####///|" db "<-------->" number3col db 0h number3row db 10h number4 db "<-------->" db "|////////|" db "|/#//#///|" db "|/#//#///|" db "|/######/|" db "|////#///|" db "|////#///|" db "<-------->" number4col db 0ah number4row db 0h number5 db "<-------->" db "|////////|" db "|//#####/|" db "|/#//////|" db "|//#####/|" db "|//////#/|" db "|/######/|" db "<-------->" number5col db 0ah number5row db 8h number6 db "<-------->" db "|////////|" db "|/#####//|" db "|/#//////|" db "|/######/|" db "|/#////#/|" db "|/######/|" db "<-------->" number6col db 0ah number6row db 10h number7 db "<-------->" db "|////////|" db "|/#####//|" db "|/////#//|" db "|////#///|" db "|///#////|" db "|//#/////|" db "<-------->" number7col db 14h number7row db 0h number8 db"<-------->" db "|////////|" db "|/######/|" db "|/#////#/|" db "|/######/|" db "|/#////#/|" db "|/######/|" db "<-------->" number8col db 14h number8row db 8h key db ?;============================================================ .codemain: call init call getnumber1 call getnumber2 call getnumber3 call getnumber4 call getnumber5 call getnumber6 call getnumber7 call getnumber8 call getnumber9 ;==========================================getKeyAgain: call getKey cmp key,'w' jz SearchUp cmp key,'s' jz searchDown cmp key,'a' jz searchLeft cmp key,'d' jz searchRight jmp getKeyAgainSearchUp: call swapUp jmp getKeyAgainsearchDown: call swapDown jmp getKeyAgain searchLeft: call swapLeft jmp getKeyAgain searchRight: call swapRight jmp getKeyAgain here:jmp here;=======================================proc blankswapUp push ax bx cx dx sub number9Row,8h xor bx,bx mov ch,number9Row mov cl,number9Col add number9Row,0fh add number9Col,09h mov dh,number9Row mov dl,number9Col mov ax,0600h int 10h sub number9Row,0fh sub number9Col,09h pop dx cx bx axretendp blankswapUp;======================================;=======================================proc blankswapDown push ax bx cx dx xor bx,bx mov ch,number9Row mov cl,number9Col add number9Row,0fh add number9Col,09h mov dh,number9Row mov dl,number9Col mov ax,0600h int 10h sub number9Row,07h sub number9Col,09h pop dx cx bx axretendp blankswapDown;===============================proc blankswapLeftpush ax bx cx dx sub number9Col,0ah xor bx,bx mov ch,number9Row mov cl,number9Col add number9Row,07h add number9Col,013h mov dh,number9Row mov dl,number9Col mov ax,0600h int 10h sub number9Row,07h sub number9Col,013h pop dx cx bx axretendp blankswapLeft;=======================================proc blankswapRightpush ax bx cx dx xor bx,bx mov ch,number9Row mov cl,number9Col add number9Row,07h add number9Col,013h mov dh,number9Row mov dl,number9Col mov ax,0600h int 10h sub number9Row,07h sub number9Col,013h pop dx cx bx axretendp blankswapRight;========================================proc swapRight push ax cmp number9Col,14h jz swapRight_done call blankswapRight add number9Col,0ah call getnumber9 mov ah,number9Row mov al,number9Col call findSameRight swapRight_done: pop axretendp swapRight;======================================proc swapLeft push ax cmp number9Col,0 jz swapLeft_done call blankswapLeft call getnumber9 mov ah,number9Row mov al,number9Col call findSameLeft swapLeft_done: pop axretendp swapLeft;======================================proc swapUp push ax cmp number9Row,0 jz swapUp_done call blankswapUp ;blank first find the one above printIt call getnumber9 mov ah,number9Row mov al,number9Col call findSameAbove swapUp_done: pop axretendp swapUp;==========================================proc swapDown push ax cmp number9Row,10h jz swapDown_done call blankswapDown ;blank first find the one above printIt call getnumber9 mov ah,number9Row mov al,number9Col call findSameDown swapDown_done: pop axretendp swapDown;==========================================proc findSameRight push ax dx mov dh,number1Row mov dl,number1Col cmp ax,dx jz findSwapRight1 mov dh,number2Row mov dl,number2Col cmp ax,dx jz findSwapRight2 mov dh,number3Row mov dl,number3Col cmp ax,dx jz findSwapRight3 mov dh,number4Row mov dl,number4Col cmp ax,dx jz findSwapRight4 mov dh,number5Row mov dl,number5Col cmp ax,dx jz findSwapRight5 mov dh,number6Row mov dl,number6Col cmp ax,dx jz findSwapRight6 mov dh,number7Row mov dl,number7Col cmp ax,dx jz findSwapRight7 mov dh,number8Row mov dl,number8Col cmp ax,dx jz findSwapRight8 findSwapRight1: sub number1Col,0ah call getNumber1 jmp end_findSameRightfindSwapRight2: sub number2Col,0ah call getNumber2 jmp end_findSameRightfindSwapRight3: sub number3Col,0ah call getNumber3 jmp end_findSameRightfindSwapRight4: sub number4Col,0ah call getNumber4 jmp end_findSameRightfindSwapRight5: sub number5Col,0ah call getNumber5 jmp end_findSameRightfindSwapRight6: sub number6Col,0ah call getNumber6 jmp end_findSameRightfindSwapRight7: sub number7Col,0ah call getNumber7 jmp end_findSameRightfindSwapRight8: sub number8Col,0ah call getNumber8 jmp end_findSameRightend_findSameRight: pop dx axretendp findSameRight;==========================================proc findSameAbove push ax dx mov dh,number1Row mov dl,number1Col cmp ax,dx jz findSwapUp1 mov dh,number2Row mov dl,number2Col cmp ax,dx jz findSwapUp2 mov dh,number3Row mov dl,number3Col cmp ax,dx jz findSwapUp3 mov dh,number4Row mov dl,number4Col cmp ax,dx jz findSwapUp4 mov dh,number5Row mov dl,number5Col cmp ax,dx jz findSwapUp5 mov dh,number6Row mov dl,number6Col cmp ax,dx jz findSwapUp6 mov dh,number7Row mov dl,number7Col cmp ax,dx jz findSwapUp7 mov dh,number8Row mov dl,number8Col cmp ax,dx jz findSwapUp8 findSwapUp1: add number1Row,8h call getNumber1 jmp end_findSamefindSwapUp2: add number2Row,8h call getNumber2 jmp end_findSamefindSwapUp3: add number3Row,8h call getNumber3 jmp end_findSamefindSwapUp4: add number4Row,8h call getNumber4 jmp end_findSamefindSwapUp5: add number5Row,8h call getNumber5 jmp end_findSamefindSwapUp6: add number6Row,8h call getNumber6 jmp end_findSamefindSwapUp7: add number7Row,8h call getNumber7 jmp end_findSamefindSwapUp8: add number8Row,8h call getNumber8 jmp end_findSameend_findSame: pop dx axretendp findSameAbove;========================================proc findSameLeft push ax dx mov dh,number1Row mov dl,number1Col cmp ax,dx jz findSwapLeft1 mov dh,number2Row mov dl,number2Col cmp ax,dx jz findSwapLeft2 mov dh,number3Row mov dl,number3Col cmp ax,dx jz findSwapLeft3 mov dh,number4Row mov dl,number4Col cmp ax,dx jz findSwapLeft4 mov dh,number5Row mov dl,number5Col cmp ax,dx jz findSwapLeft5 mov dh,number6Row mov dl,number6Col cmp ax,dx jz findSwapLeft6 mov dh,number7Row mov dl,number7Col cmp ax,dx jz findSwapLeft7 mov dh,number8Row mov dl,number8Col cmp ax,dx jz findSwapLeft8 findSwapLeft1: add number1col,0ah call getNumber1 jmp end_findSameLeftfindSwapLeft2: add number2col,0ah call getNumber2 jmp end_findSameLeftfindSwapLeft3: add number3Col,0ah call getNumber3 jmp end_findSameLeftfindSwapLeft4: add number4Col,0ah call getNumber4 jmp end_findSameLeftfindSwapLeft5: add number5Col,0ah call getNumber5 jmp end_findSameLeftfindSwapLeft6: add number6Col,0ah call getNumber6 jmp end_findSameLeftfindSwapLeft7: add number7Col,0ah call getNumber7 jmp end_findSameLeftfindSwapLeft8: add number8Col,0ah call getNumber8 jmp end_findSameLeftend_findSameLeft: pop dx axretendp findSameLeft;==========================================proc findSameDown push ax dx mov dh,number1Row mov dl,number1Col cmp ax,dx jz findSwapDown1 mov dh,number2Row mov dl,number2Col cmp ax,dx jz findSwapDown2 mov dh,number3Row mov dl,number3Col cmp ax,dx jz findSwapDown3 mov dh,number4Row mov dl,number4Col cmp ax,dx jz findSwapDown4 mov dh,number5Row mov dl,number5Col cmp ax,dx jz findSwapDown5 mov dh,number6Row mov dl,number6Col cmp ax,dx jz findSwapDown6 mov dh,number7Row mov dl,number7Col cmp ax,dx jz findSwapDown7 mov dh,number8Row mov dl,number8Col cmp ax,dx jz findSwapDown8 findSwapDown1: sub number1Row,8h call getNumber1 jmp end_findSameDownfindSwapDown2: sub number2Row,8h call getNumber2 jmp end_findSameDownfindSwapDown3: sub number3Row,8h call getNumber3 jmp end_findSameDownfindSwapDown4: sub number4Row,8h call getNumber4 jmp end_findSameDownfindSwapDown5: sub number5Row,8h call getNumber5 jmp end_findSameDownfindSwapDown6: sub number6Row,8h call getNumber6 jmp end_findSameDownfindSwapDown7: sub number7Row,8h call getNumber7 jmp end_findSameDownfindSwapDown8: sub number8Row,8h call getNumber8 jmp end_findSameDownend_findSameDown: pop dx axretendp findSameDown;========================================;===========================================proc inIt push ax mov ax, @data mov ds,ax mov es,ax pop axretendp inIt;====================================proc getnumber1 push ax bx cx dx mov bp,offset number1back1: mov ah,13h mov al,00h xor bh,bh mov bl,Colour mov cx,10 mov dh,number1Row mov dl,number1col int 10h add bp,10 inc number1Row dec count cmp count,0 jz doneNumber1 jmp back1 doneNumber1:mov count,8 sub number1Row,8 pop dx cx bx axretendp getnumber1;================================proc getnumber2 push ax bx cx dx mov bp,offset number2back2: mov ah,13h mov al,00h xor bh,bh mov bl,Colour mov cx,10 mov dh,number2Row mov dl,number2col int 10h add bp,10 inc number2Row dec count cmp count,0 jz doneNumber2 jmp back2 doneNumber2: mov count,8 sub number2Row,8 pop dx cx bx axretendp getnumber2;====================================proc getnumber3 push ax bx cx dx mov bp,offset number3back3: mov ah,13h mov al,00h xor bh,bh mov bl,Colour mov cx,10 mov dh,number3Row mov dl,number3col int 10h add bp,10 inc number3Row dec count cmp count,0 jz doneNumber3 jmp back3 doneNumber3: mov count,8 sub number3Row,8 pop dx cx bx axretendp getnumber3;====================================proc getnumber4 push ax bx cx dx mov bp,offset number4back4: mov ah,13h mov al,00h xor bh,bh mov bl,Colour mov cx,10 mov dh,number4Row mov dl,number4col int 10h add bp,10 inc number4Row dec count cmp count,0 jz doneNumber4 jmp back4 doneNumber4: mov count,8 sub number4Row,8 pop dx cx bx axretendp getnumber4;=========================================proc getnumber5 push ax bx cx dx mov bp,offset number5back5: mov ah,13h mov al,00h xor bh,bh mov bl,Colour mov cx,10 mov dh,number5Row mov dl,number5col int 10h add bp,10 inc number5Row dec count cmp count,0 jz doneNumber5 jmp back5 doneNumber5: mov count,8 sub number5Row,8 pop dx cx bx axretendp getnumber5;========================================proc getnumber6 push ax bx cx dx mov bp,offset number6back6: mov ah,13h mov al,00h xor bh,bh mov bl,Colour mov cx,10 mov dh,number6Row mov dl,number6col int 10h add bp,10 inc number6Row dec count cmp count,0 jz doneNumber6 jmp back6 doneNumber6: mov count,8 sub number6Row,8 pop dx cx bx axretendp getnumber6;===========================================proc getnumber7 push ax bx cx dx mov bp,offset number7back7: mov ah,13h mov al,00h xor bh,bh mov bl,Colour mov cx,10 mov dh,number7Row mov dl,number7col int 10h add bp,10 inc number7Row dec count cmp count,0 jz doneNumber7 jmp back7 doneNumber7: mov count,8 sub number7Row,8 pop dx cx bx axretendp getnumber7;==============================================proc getnumber8 push ax bx cx dx mov bp,offset number8back8: mov ah,13h mov al,00h xor bh,bh mov bl,Colour mov cx,10 mov dh,number8Row mov dl,number8col int 10h add bp,10 inc number8Row dec count cmp count,0 jz doneNumber8 jmp back8 doneNumber8: mov count,8 sub number8Row,8 pop dx cx bx axretendp getnumber8;================================================proc getnumber9 push ax bx cx dx mov bp,offset number9back9: mov ah,13h mov al,00h xor bh,bh mov bl,Colour mov cx,10 mov dh,number9Row mov dl,number9col int 10h add bp,10 inc number9Row dec count cmp count,0 jz doneNumber9 jmp back9 doneNumber9: mov count,8 sub number9Row,8 pop dx cx bx axretendp getnumber9;==================================================proc getKey push ax xor ah,ah int 16h mov key,al pop axretendp getKey;===============================================;=====================================proc delay push si di mov si,0ffffhdec_si: mov di,0ffffhdec_di: dec di jnz dec_di dec si jnz dec_si pop di siretendp delay;================;==========================================proc exit push ax mov ah,04ch int 21h pop axretendp exit;=========================================end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -