導航:首頁 > 編程語言 > 匯編程序問題

匯編程序問題

發布時間:2022-11-17 23:07:11

㈠ 關於匯編程序問題

用匯編語言編程如下:
CODE SEGMENT
ASSUME CS:CODE
A DW 1357H ;隨意定義兩個數據.
B DW 2468H
START: MOV AX, CODE
MOV DS, AX
MOV AX, A ;---------開始處理.
TEST AX, 1
JNZ A_ODD ;為奇數轉移.
MOV BX, B
TEST BX, 1
JNZ AE_BO ;為奇數轉移.
ALL_E: SHR AX, 1 ;皆為偶數.
SHR BX, 1 ;除以2
XCHG AX, BX ;交換一下,再去交換存放.
JMP AE_BO
A_ODD: MOV BX, B
TEST BX, 1
JNZ AE_BO ;都為奇數?
JMP _END ;否則就是A奇B偶,不用處理了.
AE_BO: MOV B, AX ;要是B奇A偶,交換存放.
MOV A, BX
_END:MOV AX, 4C00H;-------處理完畢,是不是很簡短?
INT 21H
CODE ENDS
END START

本程序已經經過調試驗證,可以滿足題目要求。
結果,必須用DEBUG來查看。

用C語言編程就更簡單了。

㈡ 匯編程序問題

1 系統軟體:
是能提高程序設計者的工作效率、方便用戶使用、可以對計算機進行管理的軟體。
包括:操作系統、監控軟體、編譯程序、,匯編程序、資料庫、標准程序庫。
因此 很明確編譯程序,匯編程序屬於系統軟體。
2 只有為解決某一特殊問題而編寫的程序才能叫應用軟體。謝謝支持!

㈢ 匯編程序小問題

匯編十六進制的數如果是字母開頭,就得在數字前面加一個0,DB是定義一個位元組的數字,即值為A,即十進制是10,對應的ASCII碼是換行,即從新行開始顯示。

㈣ 匯編程序的問題

在dw行之後,mov bx,0之前
加入標號
start:
在end後添上標號,即改為end start
就你原來的程序,你能告訴我從哪裡開始執行嗎?(這就是錯誤根源),阿門。。。
編譯選項
ml /c file.asm
link16 file.obj

㈤ 匯編子程序的問題

你的子程序放的位置不對,修改如下:
DATAS SEGMENT
str1 db 'again$'
DATAS ENDS

STACKS SEGMENT
;此處輸入堆棧段代碼
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
main proc far

START:
MOV AX,DATAS
MOV DS,AX
call crlf
call crlf

call crlf

MOV AH,4CH
INT 21H
main endp
;====================

crlf proc near

mov ah,9
mov dx,offset str1
int 21h
mov dl,0ah
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h

ret
crlf endp
;==================
CODES ENDS
END START

㈥ 匯編語言問題

①mov ax,buffer是把以buffer為首地址的連續兩位元組的內容送入ax中。
[buffer]這個用法是錯誤的。[...]表示以地址"..."中的內容為偏移地址。
mov ax,400H,正確,是將400H送入AX中。
mov ax,[400H],錯誤,因為[n]本身並不能指明所用的段寄存器。匯編程序可能會錯誤地將[n]翻譯為立即定址情況下的立即數n。
②(...)表示地址"..."中的內容。
③CS:給出當前代碼段首地址
④25H是幾位,這個具體情況具體對待。
⑤mov DISP[BX+DI],DL,正確,DISP[BX+DI]採用基址加變址定址方式,BX+DI+DISP作為操作數的偏移地址。把DL中的內容送到DS段中以BX+DI+DISP為偏移地址的位元組單元中。
⑥mov DS:DISP[BP],1234H,正確,DS:DISP[BP]採用變址定址方式,BP+DISP作為操作數的偏移地址。由於BP默認的段寄存器是SS,而這里顯示是想把它放入數據段中,所以這里聲明段寄存器DS。把1234H送入DS段中以BP+DISP為偏移地址的字單元中。
mov Byte PTR[SI],40,寄存器間接定址。40為位元組時就是00101010,為字時就是0000000000101010,...
這都是很基本的概念,建議多看看書吧。(P.S. 沒書?買一本咯!)

㈦ 匯編程序問題

這個是三級匯編的試題。有個外部模塊io.obj,不過這個文件很難下載到本。

DX清零,是因為dx、ax是合起來作為除法源的,而不是只有ax

㈧ 匯編程序出錯

DSEG SEGMENT

ADR DW 5A62H, 3122H, 8C36H

FLAG DB 0FFH ;同為偶數FLAG置1,同為奇數置0,其餘情況置全1

DSEG ENDS

CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG
START:
MOV AX, DSEG
MOV DS, AX

MOV BL, 2H

MOV AX, ADR
DIV BL
MOV BH, AH ;第一個余數

MOV AX, ADR + 2
DIV BL
ADD BH, AH ;兩個余數相加

MOV AX, ADR + 4
DIV BL
ADD BH, AH ;三個余數相加

;判斷三個余數之和:

CMP BH, 0 ;為零,就是三個偶數;
JZ QO
CMP BH, 3 ;為三,就是三個奇數;
JZ QJ
JMP OVER
QO:
MOV FLAG, 1H
JMP OVER
QJ:
MOV FLAG, 0H
OVER:
MOV AX, 4C00H
INT 21H
CSEG ENDS
END START

再試試看。

㈨ 問幾個關於匯編程序的問題

0000H和000BH是固定的,000BH是中斷入口地址
那個0100H應該是根據程序的長短來定的,要看你單片機的程序存儲器有多大,還有程序的前面要放多少東西了。7FF8H
這個是0809AD轉換器的地址,51單片機的P2口默認為十六位地址的高八位地址,要根據是不是有其它的外圍設備來定地址,如果沒接的話,可以隨便來定!!MOVX
@DPTR,A這句是用來啟動0809,不用知道A里放的是什麼東西,有這句的話0809就會被啟動了
HERE
SJMP
HERE
這句無限循環
應該是用來等待中斷的
end的話程序會被終止,中斷程序也不會再被執行了
LED那個你需要知道LED的結構很簡單,網上很容易找
硬體地址的分配是看你接的那幾根線了,原則上只要不重復應該都可以
有一些
是電路直接與單片機I/0口連接,而沒有經過AD轉換,請問什麼「情況下可以進行這樣的處理,也就是說,單片機I/0口可以接多大的電流或者電壓?」這句電壓的話一般是5V,但是那個AD不是因為電壓不匹配才接的,單片機要的是數字量,AD是將模擬兩轉換成數字量的!

㈩ 匯編程序執行問題

匯編程序都是順序執行,如果你想跳轉到一個其他位置,必須執行跳轉指令,否則就是按順序執行。匯編沒有返回指令,返回指令都是偽指令,編譯後都是跳轉指令。。。如果你想讓一個程序不按順序執行,在匯編里必須用到跳轉指令。。。。 C語言每個函數執行完後返回都是調用了跳轉指令。。。
在匯編里,CPU的操作時詳細到每一步,比如形參傳遞,必須將形參靠指令放入參數表,然後調用跳轉指令,完成函數調用,運算中自動變數出棧入棧都必須你親自考指令完成,而且必須要保存函數調用的返回地址,執行完後將函回值放到返回值位置,然後跳到這個地址,完成一次函數調用。。。。
當然上述過程是C語言的規則,如果是匯編程序你隨意,沒必要按照C語言的方式。。。

閱讀全文

與匯編程序問題相關的資料

熱點內容
網盤忘記解壓碼怎麼辦 瀏覽:852
文件加密看不到裡面的內容 瀏覽:651
程序員腦子里都想什麼 瀏覽:430
oppp手機信任app在哪裡設置 瀏覽:185
java地址重定向 瀏覽:268
一年級下冊摘蘋果的演算法是怎樣的 瀏覽:448
程序員出軌電視劇 瀏覽:88
伺服器系統地址怎麼查 瀏覽:54
解壓游戲發行官 瀏覽:601
國外小伙解壓實驗 瀏覽:336
頂級大學開設加密貨幣 瀏覽:437
java重載與多態 瀏覽:528
騰訊應屆程序員 瀏覽:942
一鍵編譯程序 瀏覽:129
語音加密包哪個好 瀏覽:339
有什麼學習高中語文的app 瀏覽:282
安卓手機的表格里怎麼打勾 瀏覽:410
阿里雲伺服器有網路安全服務嗎 瀏覽:969
超解壓兔子視頻 瀏覽:24
單片機怎麼測負脈沖 瀏覽:174