組合語言編寫的程式顯示有語法錯誤

時間 2022-03-14 09:45:20

1樓:匿名使用者

已經除錯通過的**

data segment

timer db 4 dup(0)

data ends

stack segment

db 100 dup(0)

stack ends

code segment

assume cs:code,ds:data,ss:stackstart:mov ax,0

mov ds,ax

mov si,18h

shl si,1

shl si,1

mov dx,offset clock

mov [si+2],dx

mov dx,0ff00h

mov al,00010011b

out dx,al

mov dx,0ff01h

mov al,00011000b

out dx,al

mov al,00000011b

out dx,al

stiwait1:

hltjmp wait1

clock proc far

push ax

push si

mov ax,seg timer

mov ds,ax

mov si,offset timer

mov al,[si]

inc al

mov [si],al

cmp al,50

jns trend

mov al,0

mov [si],al

mov al,[si+1]

add al,1

daamov [si+1],al

cmp al,60h

jnz trend

mov al,0

mov [si+1],al

cmp al,[si+2]

add al,1

daamov [si+2],al

cmp al,60h

jnz trend

;mov al,0

;mov [al+2],al

push si

mov si,0

mov al,0

mov [si+2],al

pop si

mov al,[si+3]

add al,1

daamov[si+3],al

cmp al,24h

jnz trend

mov al,0

mov [si+3],al

trend:pop si

pop ax

stiiret

clock endp

code ends

end start

2樓:匿名使用者

組合語言是符號語言,計算機直接執行的語言只有機器語言

3樓:做而論道

編寫了這許多的**,想要幹什麼?

"用組合語言編寫的程式叫彙編程式"為什麼是錯的啊???

4樓:

「彙編程式」,是一種翻譯程式,它能將用組合語言編寫的源程式翻譯成機器語言的目標**。

用組合語言寫的源程式,可以稱之為「組合語言程式」,但不能叫它「彙編程式」。

用組合語言編寫的顯示字串的程式,但是顯示不出正確的字元,求指教。

5樓:匿名使用者

如果你把**放在磁碟上,那麼載入的位置是 07c0:0000 我不太清楚你的跳轉是否工作正常

另外,建議用可以除錯的虛擬機器試試比如 bochs

6樓:做而論道

你先單步執行一下,看每一步,符合你的思路否。

請問由組合語言編寫的計算機程式能否被計算機直接執行,為什麼? 10

7樓:匿名使用者

確切地說:不行.到目前為止,計算機能直接識別和處理的語言只有一種:

機器語言,這是用一連串的0和1來表示的二進位制的**.組合語言是在機器語言的基礎上,將一些資訊符號化後產生的.比如假設原來001在機器語言裡表示加法,現在用add這個符號來表示加法,就容易被理解和使用.

用組合語言寫的程式**要執行,必須經過彙編和連線等幾個步驟才可以,彙編的目的主要是檢查有沒有語法錯誤等等,而連線,則是和具體的作業系統相聯絡,生成可執行的**檔案--機器語言程式.實際上用高階語言寫的**也是,要經過編譯後生成可執行的**檔案才可以由計算機執行,這些**檔案,也就是最終的機器語言程式.需要補充的是,現在有一些研究中的計算機,可以直接識別和執行高階語言,那實際上是將對應的編譯模組等嵌入到硬體裡面了,本質上還是需要將高階語言資訊轉換為對應的二進位制控制訊號.

8樓:匿名使用者

額 很好 看來我錯了 採納樓上吧 又學到東西了 呵呵

編寫一個完整的組合語言程式,要求在螢幕上顯示出字串「hello,assembly language」。

9樓:柴小火攻城獅

datas segment

buf db 'hello,assembly language.$'

datas ends

codes segment

assume cs:codes,ds:datasstart:

mov ax,datas

mov ds,ax

mov dx,offset buf

mov ah,09h

int 21h

mov ah,4ch

int 21h

codes ends

end start

用keil編譯組合語言編寫的程式,顯示有錯誤且目標未建立,驅動是at89c52,程式如下:

10樓:匿名使用者

你的程式不全,缺少以下子程式或**:

1、delay

2、wri

3、wrd

4、delay1

5、dab2

計算機能直接識別 執行用組合語言編寫的程式對嗎

11樓:小勳愛吃肉

不對。用組合語言編寫的程式計算機不能直接識別它。計算機能直接識別的是機器**,也就是彙編程式(用組合語言編寫的程式)被編譯之後形成的二進位制**(不管是指令還是資料,都是用二進位制來表示的)。

組合語言編寫的程式不能被計算機直接識別。計算機只能識別二進位制。必須先把組合語言源程式翻譯成機器語言程式(稱目標程式),然後才能被執行。

在組合語言中,用助記符(mnemonics)代替機器指令的操作碼,用地址符號(symbol)或標號(label)代替指令或運算元的地址。在不同的裝置中,組合語言對應著不同的機器語言指令集,通過彙編過程轉換成機器指令。

組合語言和機器語言的性質差不多,只是被符號化了的機器語言,仍然是一種依賴於機器的語言。與機器語言相比較,組合語言在編寫、修改和閱讀等方面有了相當的改進,但與高階語言相比還相差甚遠。

12樓:匿名使用者

不對的,計算機能直接識別的是機器**,也就是彙編程式(用組合語言編寫的程式)被編譯之後形成的二進位制**(不管是指令還是資料,都是用二進位制來表示的)。

組合語言編寫的程式不能被計算機直接識別。計算機只能識別二進位制。

13樓:匿名使用者

真正意義上的執行,一定是機器碼

彙編是最接近機器碼的程式**

不過,為了除錯彙編,可以用工具軟體實現彙編程式的除錯過程顯示比如debug 程式

14樓:匿名使用者

不對,計算機唯一能直接識別執行的是機器語言。機器語言是和cpu相關的,不同的cpu所使用的機器語言也不同。組合語言是符號化的機器語言,它與機器語言一一對應,但機器不能直接識別和執行,需要經過編譯才可以被機器執行。

組合語言程式設計問題編寫組合語言程式。能每隔10秒顯示數字分別為

org 0000h 數碼管共陰 ajmp main org 000bh t0ms equ not 50000 100 ms 晶振 6.000 mhz pjsbz equ 20h pjsbzy equ 21h pst0 mov tl0,low t0ms t0 中斷 mov th0,high t0ms ...

用組合語言編寫時鐘程式,能顯示時分秒的,還要有秒錶就是計

雪蕻軒 stack1 segment stack dw 200 dup stack1 ends data segment space db 1000 dup pattern db 6 dup 0c9h,26 dup 0cdh 0bbh,6 dup db 6 dup 0bah,26 dup 20h 0...

用8086組合語言編寫程式,接受從鍵盤上輸入的兩位十進位制數字,這個數經過BCD碼處理,以十六進位制顯示出

做而論道 disp str macro x 巨集定義.mov dx,offset x mov ah,9 int 21h endm data segment 資料段.msg1 db 13,10,please input msg3 db 13,10,the hex is x dw 存放新輸入資料.dat...