組合語言程式設計,組合語言程式設計步驟 有那幾步

2022-03-01 07:34:55 字數 5664 閱讀 4050

1樓:匿名使用者

申請記憶體

輸入數字

設定一個變數,初始是0

將接收的數字分別寫到3個申請的記憶體中,

然後分別比較,符合條件修改這個變數。

輸出回到dos

組合語言程式設計步驟 有那幾步

2樓:匿名使用者

組合語言程式設計步驟: 1、 分析問題,抽象出描述問題的資料模型 2、 確定問題的演算法思想 3、 畫出流程圖或結構圖 4、 分配儲存器和工作單元(暫存器) 5、 逐條編寫程式 6、 靜態檢查,上機除錯 例:程式設計查詢考生的最高分,假設所有考生分數已存入計算機記憶體。

1、 分析問題 根據條件、特點、規律 →數學模型 本例分數已給定為0~200之間的整數集合(考慮加試分) ,記為,找max(注: 簡單問題不一定寫數學模型) 。 2、 確定演算法思想 最好利用現成演算法和程式設計方法,若無,則需根據實踐經驗總結演算法思想。

如本例, 從成績單第一分數往下看,邊看邊比較,記住較高分,捨棄較低分,直至看完,最高分存於 腦中。歸納演算法思想:建立資料指標並指向資料區首地址。

將第一數取入暫存器(如al) , 與下一數比較,若下一數大則將其取入暫存器,否則調整指標,再與下一數比較,重複上述 過程,直至比較完畢,暫存器中即最高分。 讀分數用mov指令,比較用cmp指令,分析判斷用條件轉移指令。 3、 畫流程圖或結構圖 有邏輯流程、演算法流程、程式流程等,複雜問題需畫模組結構。

本例簡單,只畫出程式 流程圖(用模組化結構的n-s流程圖表示) : 本例的n-s流程圖 圖中初始化包括:設一個計數器,將分數個數減一後送計數器,每比較一次減一,至 零查詢結束;建立一個指標指向資料區。

開始 初始化 取第一數到暫存器 與下一數比較 下一數大? 是 否 取大數到暫存器 修改指標,計數次數減一 返回到迴圈體開始,直到計數次數為0退出迴圈 結束 4、 分配儲存器空間和工作單元(暫存器) 定義資料段、堆疊段、**段等。工作單元一般用暫存器。

本例:分數放資料段,建100 位元組堆疊空間,bx作資料指標,cx作計數器,al放最高分。 5、 逐條編寫程式 data segment fen db 85,90,60,75,87,35,80,78,96,82…… ;存分數 max db ?

;存最高分 data ends stack segment para stack 『stack』 db 100 dup(?) ;100位元組堆疊 stack ends code segment assume cs:code,ds:

data,ss:stack start proc far push ds mov ax,0 push ax ;為了返回dos mov ax,data mov ds,ax ;置資料段暫存器 mov bx,offset fen ;置資料指標 mov cx,max-fen ;置計數器初值 dec cx ;n個分數比較n-1次 mov al,[bx] ;取第一個分數 lop: inc bx ;調整指標 cmp al,[bx] ;與下一數比較 jae next ;大於等於則轉 mov al,[bx] ;否則取下一數 next:

loop lop ;計數器減一, ;不為零轉lop mov max,al ;存放最高分 ret ;返回dos start endp code ends end start 6、 靜態檢查,上機除錯 選用指令儘量位元組少,使其執行速度快。易錯處應重點查,如比較次數、轉移條件等。 確信無錯後方可上機除錯。

組合語言是一種什麼程式設計語言?

3樓:鶴髮童顏

組合語言是依賴於計算機的低階的程式設計語言。

這些指令都是二進位制的,稱為操作碼(opcode),比如加法指令就是00000011。編譯器的作用,就是將高階語言寫好的程式,翻譯成一條條操作碼。

對於人類來說,二進位制程式是不可讀的,根本看不出來機器幹了什麼。為了解決可讀性的問題,以及偶爾的編輯需求,就誕生了組合語言。

由於彙編更接近機器語言,能夠直接對硬體進行操作,生成的程式與其他的語言相比具有更高的執行速度,佔用更小的記憶體,因此在一些對於時效性要求很高的程式、許多大型程式的核心模組以及工業控制方面大量應用。

組合語言是二進位制指令的文字形式,與指令是一一對應的關係。比如,加法指令00000011寫成組合語言就是 add。只要還原成二進位制,組合語言就可以被 cpu 直接執行,所以它是最底層的低階語言。

組合語言基礎命令就只有「將資訊從某處移到某處」和加、減等,都是幼兒園小孩能理解的計算。跳轉命令分直接跳轉和有條件跳轉,總共加起來也沒幾個。

而且每個模組都很小,能寫的內容非常有限。但在這麼簡陋的基礎上,可以從最基礎的傳輸資訊、到用加法減法配合儲存單元實現乘法除法等運算、再到更復雜的資訊處理,可以說這個遊戲在其設計範圍內真的做到極致了。

學習組合語言的好處:

可以自己編寫出比較高階的程式,開始專精彙編分支的某一種比如51微控制器,arm,x86,懂得硬體基本構造和計算機邏輯電路和cpu原理。可以自己編寫除錯底層系統。可以彙編/反彙編,可以進行病毒的編寫和除錯和破譯。

移動端系統底層/電子產品/硬體基本系統熟練於心,可以進階成一個真正的電子極客了。

4樓:江柳兒情感生活

組合語言(assembly language)包含用抄短bai助記符如 add、mov、sub 和 call 書寫的語句。彙編du語言與機器語言是一zhi對一(daoone-to-one)的關係:每一條組合語言指令對應一條機器語言指令。

5樓:匿名使用者

組合語言是一種依賴於計算機的低階 程式設計語言 。

組合語言是直接告訴cpu的每個暫存器及每個外設去做什麼,因為是最基本的語言,比這再低階的語言就職110100010101011110之類的語言了。

6樓:左手半夏

組合語言本身很簡單,常用指令沒幾個,語法規則也不多,看幾個小時資料似乎就明白了,但其實不然。彙編的背後是體系結構,是程式設計拋開各種高層形態的最根本,最本質的解釋。

7樓:傑哥來說電影

組合語言是依賴於計算機的低階的程式設計語言。

以匯言但編譯機語,故其不從根本版上解決機言之特殊性。是權故,匯語與機身之程式設計境同候。難推與植,然其言之有仍之機行。高效,以其可讀性、簡性,匯言猶為常用之程式設計語一。

8樓:匿名使用者

組合語言是最古老的程式語言,在所有的語言中,它與原生機器語言最為接近。它能直接訪問計算機硬體,要求使用者瞭解計算機架構和作業系統。

9樓:沙裡波特

組合語言du

,是和機器zhi語dao言專

同一層次的程式語言。

組合語言的主體,是機器語

屬言的助記符,比機器語言易懂,好記。

用組合語言編寫程式,也就是用機器語言程式設計,難度很高。

一般初學者,學不進去。

會了高階語言,如果不學會組合語言,就難稱高手。

組合語言程式設計

10樓:北京歡迎你迎你

data segment

n db 5

result dw ?

data ends

code segment

assume ds:data,cs:codestart:

mov ax,data

mov ds,ax

mov cl,n

mov ch,0

mov al,1

next:

mul cl

loop next

mov result,ax

mov ax,4c00h

int 21h

code ends

end start

組合語言程式設計程式結構可分為哪四種

11樓:神馬時候的事

順序程式結構,分支或選擇程式結構,迴圈程式結構,子程。

順序結構的程式雖然能解決計算、輸出等問題,但不能做判斷再選擇。對於要先做判斷再選擇的問題就要使用分支結構。分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。

分支結構的程式設計方法的關鍵在於構造合適的分支條件和分析程式流程,根據不同的程式流程選擇適當的分支語句。

12樓:匿名使用者

1.順序程式結構

2.分支或選擇程式結構

3.迴圈程式結構

4.子程式

13樓:

順序程式-分支程式-迴圈程式-子程式

組合語言程式設計例項

14樓:一般般拉風

第一題:mov cl,0

mov ch,17

next:dec ch

je exit

mov bx,0

shl ax,1

rol bx,1

cmp bx,0

jz next

inc cl

jmp next

exit:mov ah,4ch

int 21h

第二題:

mov cx,10

mov si,offset buffer

next:mov bx,word ptr[si]inc bx

mov word ptr[si],bx

inc si

inc si

loop exit

jmp next

exit: mov ah,4ch

int 21h

組合語言程式設計

15樓:頹廢_小胖

1.c,e 這個題出要考查幾條算術和邏輯指令,仔細一點就可以了。

2 a,d b錯在數字大過了一個位元組 c錯在用數字來標識標號了 e錯在用?號定義dup的次數

3 b,e 同一 c,d不影響al的值

4 a c d e

5 a b

16樓:湯旺河邊

1、將dl中小寫字母轉換為大寫,可用c、e指令。

a、add dl,20h

b、or dl ,20h

c、xor dl ,20h

d、and dl,20h

e、sub dl ,20h

2、如下符合組合語言語法的資料定義語句有a、d。

a、wvar db 80h

b、varb db 0ff00h

c、3xyz dw 3000

d、wvar dw 2 dup(?)

e、varb db ? dup(0)

3、將al中的大寫字母轉換為小寫,可用b、d指令。

a、sub al,20h

b、add al,20h

c、cmp al ,20h

d、test al,20h

e、or al,20h

4、迴圈結構的程式通常包括a、c、d部分。

a、設定迴圈初值

b、呼叫迴圈

c、迴圈體

d、迴圈控制

e、迴圈返回

5、標號的屬性有a、b。

a、near

b、far

c、byte

d、word

e、dword

17樓:疾星★追風

1 e2 a d

3 b4 a d e

5 a b

用組合語言程式設計學生成績管理系統,用組合語言程式設計 編寫一程式統計學生的數學成績,分別歸類90 99分,80 89分,70 79分,

以下程式是對100個資料進行統計,統計100,90 99,80 89,70 79,60 69,和59以下等分數段的人數,結果存放在result開始的記憶體單元 dseg segment buff db 98,87,56,12,100,46,79,68,59,98 db 59,86,69,96,100...

組合語言程序,組合語言程式

變數名 str1 str1 str1 str2 str2 str2 numb numb 偏移地址 0000h 0001h 0002h 0003h 0004h 0005h 0006h 0007h 單後設資料 00h 01h 02h 48h 49h 4ah 00h 00h 變數名 numb numw n...

組合語言程式設計高手請幫忙!重賞

我這裡只寫了10個成績,你只要把score後面的成績增加到60個就行了,其餘的不用變。最後高於或等於60的成績的個數放在numb中。這個題目其實不難,要看明白哦。不懂的地方給我發訊息吧。dseg segment score db 50,48,60,73,67,79,89,86,92,48 cnt d...