1樓:匿名使用者
code segment
assume cs:code
org 100h
start:
jmp bbb
x dw 0ffffh
msg1 db 10,13,'+1','$'
msg2 db 10,13,' 0','$'
msg3 db 10,13,'-1','$'
bbb:
push cs
pop ds
cmp word ptr x,0
je line1
jl line2
lea dx,msg1
mov ah,9
int 21h
jmp exit
line1:
lea dx,msg2
mov ah,9
int 21h
jmp exit
line2:
lea dx,msg3
mov ah,9
int 21h
exit:
mov ah,1
int 21h
mov ah,4ch
int 21h
code ends
end start
組合語言有什麼特點
2樓:狼道刀
1、機器相關性
這是一種面向機器的低階語言,通常是為特定的計算機或系列計算機專門設計的。因為是機器指令的符號化表示,故不同的機器就有不同的組合語言。使用組合語言能面向機器並較好地發揮機器的特性,得到質量較高的程式。
2、高速度和高效率
組合語言保持了機器語言的優點,具有直接和簡捷的特點,可有效地訪問、控制計算機的各種硬體裝置,如磁碟、儲存器、cpu、i/o埠等,且佔用記憶體少,執行速度快,是高效的程式設計語言。
3、編寫和除錯的複雜性
由於是直接控制硬體,且簡單的任務也需要很多組合語言語句,因此在進行程式設計時必須面面俱到,需要考慮到一切可能的問題,合理調配和使用各種軟、硬體資源。這樣,就不可避免地加重了程式設計師的負擔。與此相同,在程式除錯時,一旦程式的執行出了問題,就很難發現。
擴充套件資料
組合語言的發展歷程:
說到組合語言的產生,首先要講一下機器語言。機器語言是機器指令的集合。機器指令來講就是一臺機器可以正確執行的命令。
電子計算機的機器指令是一列二進位制數字。計算機將之轉變為一列高低電平,以使計算機的電子器件受到驅動,進行運算。
上面所說的計算機指的是可以執行機器指令,進行運算的機器。這是早期計算機的概念。在我們常用的pc機中,有一個晶片來完成上面所說的計算機的功能。
這個晶片就是我們常說的cpu(central processing unit,**處理單元)。
每一種微處理器,由於硬體設計和內部結構的不同,就需要用不同的電平脈衝來控制,使它工作。所以每一種微處理器都有自己的機器指令集,也就是機器語言。
早期的程式設計均使用機器語言。程式設計師們將用0, 1數字編成的程式**打在紙帶或卡片上,1打孔,0不打孔,再將程式通過紙帶機或卡片機輸入計算機,進行運算。這樣的機器語言由純粹的0和1構成,十分複雜,不方便閱讀和修改,也容易產生錯誤。
程式設計師們很快就發現了使用機器語言帶來的麻煩,它們難於辨別和記憶,給整個產業的發展帶來了障礙,於是組合語言產生了。
3樓:匿名使用者
組合語言的總體特點1.機器相關性
這是一種面向機器的低階語言,通常是為特定的計算機或系列計算機專門設計的。因為是機器指令的符號化表示,故不同的機器就有不同的組合語言。使用組合語言能面向機器並較好地發揮機器的特性,得到質量較高的程式。
2.高速度和高效率
組合語言保持了機器語言的優點,具有直接和簡捷的特點,可有效地訪問、控制計算機的各種硬體裝置,如磁碟、儲存器、cpu、i/o埠等,且佔用記憶體少,執行速度快,是高效的程式設計語言。
3.編寫和除錯的複雜性
由於是直接控制硬體,且簡單的任務也需要很多組合語言語句,因此在進行程式設計時必須面面俱到,需要考慮到一切可能的問題,合理調配和使用各種軟、硬體資源。這樣,就不可避免地加重了程式設計師的負擔。與此相同,在程式除錯時,一旦程式的執行出了問題,就很難發現。
優點1、因為用組合語言設計的程式最終被轉換成機器指令,故能夠保持機器語言的一致性,直接、簡捷,並能像機器指令一樣訪問、控制計算機的各種硬體裝置,如磁碟、儲存器、cpu、i/o埠等。使用組合語言,可以訪問所有能夠被訪問的軟、硬體資源。
2、目標**簡短,佔用記憶體少,執行速度快,是高效的程式設計語言,經常與高階語言配合使用,以改善程式的執行速度和效率,彌補高階語言在硬體控制方面的不足,應用十分廣泛。
缺點1、組合語言是面向機器的,處於整個計算機語言層次結構的底層,故被視為一種低階語言,通常是為特定的計算機或系列計算機專門設計的。不同的處理器有不同的組合語言語法和編譯器,編譯的程式無法在不同的處理器上執行,缺乏可移植性;
2、難於從組合語言**上理解程式設計意圖,可維護性差,即使是完成簡單的工作也需要大量的組合語言**,很容易產生bug,難於除錯;
3、使用組合語言必須對某種處理器非常瞭解,而且只能針對特定的體系結構和處理器進行優化,開發效率很低,週期長且單調。
4樓:雲中漫歌
一方面,組合語言指令是用一些具有相應含義的助憶符來表達的,所以,它要比機器語言容易掌握和運用,但另一方面,它要直接使用cpu的資源,相對高階程式設計語言來說,它又顯得難掌握。
組合語言程式歸納起來大概有以下幾個主要特性。
1、與機器相關性
組合語言指令是機器指令的一種符號表示,而不同型別的cpu有不同的機器指令系統,也就有不同的組合語言,所以,組合語言程式與機器有著密切的關係。
由於組合語言程式與機器的相關性,所以,除了同系列、不同型號cpu之間的組合語言程式有一定程度的可移植性之外,其它不同型別(如:小型機和微機等)cpu之間的組合語言程式是無法移植的,也就是說,組合語言程式的通用性和可移植性要比高階語言程式低。
2、執行的高效率
正因為組合語言有「與機器相關性」的特性,程式設計師用組合語言編寫程式時,可充分發揮自己的聰明才智,對機器內部的各種資源進行合理的安排,讓它們始終處於最佳的使用狀態,這樣做的最終效果就是:程式的執行**短,執行速度快。
現在,高階語言的編譯程式在進行暫存器分配和目標**生成時,也都有一定程度的優化(在後續課程《編譯原理》的有關章節會有詳細介紹),但由於所使用的「優化策略」要適應各種不同的情況,所以,這些優化策略只能在巨集觀上,不可能在微觀上、細節上進行優化。而用組合語言編寫程式幾乎是程式設計師直接在寫執行**,程式設計師可以在程式的每個具體細節上進行優化,這也是組合語言程式執行高效率的原因之一。
3、編寫程式的複雜性
組合語言是一種面向機器的語言,其彙編指令與機器指令基本上一一對應,所以,彙編指令也同機器指令一樣具有功能單
一、具體的特點。要想完成某件工作(如計算:a+b+c等),就必須安排cpu的每步工作(如:
先計算a+b,再把c加到前者的結果上)。另外,在編寫組合語言程式時,還要考慮機器資源的限制、彙編指令的細節和限制等等
由於組合語言程式要安排運算的每一個細節,這就使得編寫組合語言程式比較繁瑣、複雜。一個簡單的計算公式或計算方法,也要用一系列彙編指令一步一步來實現。
4、除錯的複雜性
在通常情況下,除錯組合語言程式要比除錯高階語言程式困難,其主要原因有四:
組合語言指令涉及到機器資源的細節,在除錯過程中,要清楚每個資源的變化情況;
程式設計師在編寫組合語言程式時,為了提高資源的利用率,可以使用各種實現技巧,而這些技巧完全有可能破壞程式的可讀性。這樣,在除錯過程中,除了要知道每條指令的執行功能,還要清楚它在整個解題過程中的作用;
高階語言程式幾乎不顯式地使用「轉移語句」,但組合語言程式要用到大量的、各類轉移指令,這些跳轉指令大大地增加了除錯程式的難度。如果在組合語言程式中也強調不使用「轉移指令」,那麼,組合語言程式就會變成功能單調的順序程式,這顯然是不現實的;
除錯工具落後,高階語言程式可以在源程式級進行符號跟蹤,而組合語言程式只能跟蹤機器指令。不過,現在這方面也有所改善,cv(codeview)、td(turbo debug)等軟體也可在源程式級進行符號跟蹤了。
《我在網上給你找的,n你看看能解決你的問題不》
5樓:匿名使用者
接近硬體。
對邏輯能力有一定要求
6樓:保險經紀人王巨集
現代的彙編已經是hla,高階組合語言了,例如:fa**
7樓:信念_永存
程式小, 執行快 , 速度高
相對 高階語言c /c++ 邏輯性較差
一鍵多控流水燈組合語言每句代表什麼含義,求解
8樓:修者世界
org 0000h
ljmp main
org 0030h
main:
mov a,#0feh ;初始化,首次亮燈控制字loop:
jb p1.0,$ ;等待按鍵
jnb p1.0,$ ;等待鍵抬起
mov p2,a ;將控制字送p2口rl a ;控制字左迴圈移位一次
sjmp loop ;繼續迴圈end
求大神幫我分析下這個組合語言程式源程式
這段 的功能是將資料段定義的 字元常量 string1中的字元 count 逐個複製到由string2的偏移量 string2的偏移量為 05h 開始的記憶體單元中,並輸出到顯示器上。因為 mov cx,10 設定的迴圈次數為10次 前五次的迴圈為 將字元常量 string1中的字元 count 逐...
求LED顯示屏JHD162A,用組合語言和C51微控制器進行編
jhd162a 資料 bai手du冊zhi 上有dao實內例容 include define uchar unsigned charvoid t1isr interrupt 3 顯示scanled scanled 8 main 程式語言和組合語言有什麼區別啊 首先玩糾正的是,組合語言也是一種程式語言...
小白髮問,這個c程式要怎麼寫啊,求大佬幫助
這個可以用窮舉法,如下 include int main return 0 執行 小白髮問,這個c程式怎麼寫,大佬們看看?include void main for i 0 i 4 i 小白髮問,這個c程式該怎麼寫?include void main include using namespace ...