組合語言程式設計大賽賽後總結

2021-09-02 20:17:42 字數 1681 閱讀 1860

將顯示器的螢幕劃分成大小相等的左右兩個顯示視窗,並畫出每個顯示視窗的邊框,視窗大小適中。 在左邊顯示視窗,能夠執行簡單的貪吃蛇遊戲,即採用鍵盤按鍵控制貪吃蛇前進方向,如「w、s、a、d」鍵分別為上下左右方向控制按鍵,以貪吃蛇碰觸視窗邊框為遊戲終止條件,以「r」鍵為遊戲重新開始。若遊戲進行當中無鍵按下,則貪吃蛇保持當前方向不變直至撞牆。 在右邊顯示視窗,能夠畫出等邊三角形,要求:三角形位置在該顯示區域的中部,引數邊長由鍵盤輸入確定。每次根據輸入的引數,在該視窗將三角形重新繪製出來。 初始工作視窗為左邊顯示視窗,以後每按一次tab鍵切換至旁邊顯示視窗。當某個顯示視窗被選中時,則游標在該視窗底部閃爍,鍵盤輸入對當前視窗有效。整個系統按esc鍵退出,返回dos作業系統介面。 

現在選取乙個方向,讓蛇頭向那邊移動,接著蛇身和蛇尾只要等於上一時刻它前面的那一塊就夠了,即實現兩相鄰物塊之間的賦值即可。現在的問題是,每次的小尾巴都會殘留,因為沒有什麼可以跟它作交換。怎麼辦呢?清屏。現在思路變為:畫蛇——延時——清屏——畫蛇。

現在能讓它朝乙個方向執行起來了,接下來考慮上下左右方向。蛇怎麼知道自己改向哪前進呢?響應按鍵。先實現按一下它只向前走一步的操作,然後一直按住就可以朝著這個方向一直前進了。那麼如何使其執行過程中響應一次按鍵改變方向繼續前進呢?中斷!這是個核心操作。參考《組合語言》(第三版)外中斷那一章,將bios系統呼叫為我們所用。在中斷服務程式中通過修改各標誌位來實現蛇的走向。

接著是怎麼讓它檢測撞牆然後死掉。這裡比較簡單,只考慮蛇頭就可以啦,使蛇頭滿足橫縱座標在乙個範圍裡,如果出去就宣告死亡。

此時貪吃蛇寫的差不多了,隊友的三角形也基本ok。然而合併時出現問題。在我的貪吃蛇下,加入三角形時,怎麼都無法顯示,三角形單獨卻可以顯示。

小組開會討論後,發現是顯示模式的設定出現了紕漏。dos下顯示器有兩種顯示方式——字元顯示(游標)、圖形顯示(畫素點)。並且同時只能取其一。

因此不得不考慮在圖形模式重新下繪製貪吃蛇。。。。。

組合語言程式設計

1.彙編語句的三種基本型別 2.標號相關 3.變數相關 4.運算元定址方式 buffer dw 500 x 17 rept 500 這是乙個重複巨集,以下重複彙編500遍 x x 979 mod 65535 這句話我也不懂 dw x endm 巨集在這裡結束transto10 proc near 函...

組合語言程式設計

乙個完整的源程式通常由若干邏輯段組成,包括資料段 附加段 堆疊段和 段。它們分別對映到儲存器中的物理段上。每個邏輯段以segment語句開始,以ends結束,整個源程式用end語句結尾。段中存放源程式的所有指令碼 資料 變數等則放在資料段和附加段中。程式中可以定義堆疊段,也可以直接利用系統中的堆疊段...

組合語言 總結

這篇文章寫於2019年5月9號。今天在了 站 中無意中看到這篇文章。我忘了當時出於什麼原因將其刪除。重新看了一遍,還記得當年是在乙個自習室裡面敲的。文中的一些往事雖然沒直接寫出來,但看了下內容,還能記得。腦子確實是個好東西。既然看到,便是緣分,重新放出來吧。2021年1月28號 後面還有乙個課設二,...