導航:首頁 > 編程語言 > 匯編程序設計

匯編程序設計

發布時間:2022-01-29 07:17:18

『壹』 用匯編語言設計程序實現10!(10的階乘)

mov r0,#10
mov r8,r0
mov r9,#0
sub r0,r8,#1
loop:
mov r1,r9
UMULL r8,r9,r0,r8
MLA r9,r1,r0,r9
SUBS r0,r0,#1
BNE loop

『貳』 關於匯編程序設計

第8題:

①先在屏幕顯示一行字元,長度和顯示位置自己定
②讓行首的一個字元移動到行尾進行顯示(這是從屏幕左邊到右邊),設置好延時,重復上面的動作,在移動程序內部設置好停止移動的條件。或者你可以整體將字元串向前移動一格,同樣設置好延時,重復操作

『叄』 匯編語言程序設計題

我寫的有點長,經驗證,運行無誤。
代碼貼在:任意兩個10位以內十六進制數求和
http://tieba..com/f?kz=681706003
如是能用的,請頂一下。

為了方便修改,新代碼直接貼在我的網路空間。
新代碼添加了無輸入處理和清除前導空格指令。
經驗證,無樓主提到的『1111111111+1111111111=42222222222』
的BUG,顯示運算結果准確。

附言:21H的10號(0AH)功能,無法濾除:G~Z,所以不能用;
湯旺河邊 錯在: rcl al,1 ;把進位標志移入AL.

『肆』 匯編語言是一種什麼程序設計語言

匯編語言是一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。在匯編語言中,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或操作數的地址。

比起機器語言,匯編語言具有更高的機器相關性,更加便於記憶和書寫,但又同時保留了機器語言高速度和高效率的特點。

匯編語言仍是面向機器的語言,很難從其代碼上理解程序設計意圖,設計出來的程序不易被移植,故不像其他大多數的高級計算機語言一樣被廣泛應用。所以在高級語言高度發展的今天,它通常被用在底層,通常是程序優化或硬體操作的場合。



(4)匯編程序設計擴展閱讀:

在許多程序的設計當中,高級語言和匯編語言可以相互交叉調用,進行參數傳遞,共享數據信息,這便是所謂的混合編程。

程序員往往在高級語言程序中直接嵌入匯編語句,以實現對硬體直接進行控制的功能,這是混合編程中常見的做法。也可以在高級語言程序中使用匯編語言中定義的變數和常量,或使用內部函數對匯編語句進行調用。

簡而言之,這類混合編程的方法可以讓高級語言與匯編語言互相取長補短,各自發揮各自優勢,同時減少各自缺點所帶來的不便,善用這個方法可以使開發和編程工作達到事半功倍的效果。

『伍』 匯編語言程序設計中使用哪種軟體工具

1、MASM。

微軟公司為x86微處理器家族開發的匯編開發環境,擁有可視化的開發界面,使開發人員不必再使用DOS環境進行匯編的開發,編譯速度快,支持80x86匯編以及Win32Asm,是Windows下開發匯編的利器。

2、NASM。

全稱The Netwide Assembler,是一款基於80x86和x86-64平台的匯編語言編譯程序,其設計初衷是為了實現編譯器程序跨平台和模塊化的特性。

3、TASM。

Borland公司開發的匯編編譯器,被廣泛用於Turbo C,Quick Basic等編譯器,用作中間過渡編譯。它也能獨立的編譯純匯編或是Win32Asm的代碼。具有編譯快速,高效的特點,至今依然是匯編開發的首選利器。

4、GAS。

GNU匯編器(GNU Assembler),簡稱為GAS,是由GNU計劃所使用的匯編器,GNU的核心精神是自由與分享,所以GAS亦是自由軟體。

5、RadASM。

一款著名的WIN32匯編編輯器,支持MASM、TASM等多種匯編編譯器,Windows界面,支持語法高亮,自帶一個資源編輯器和一個調試器。擁有較強的工程管理功能,加之眾多插件的支持,使得它用匯編語言編寫Windows軟體變得得心應手。

『陸』 匯編程序設計

;
IN AL, 40H
CMP AL, 1
JNE _2
;------------------------------
LEA SI, BUF1
MOV AX, 0
MOV BX, 0
MOV CX, 100
LP1:
MOV AL, [SI]
ADD BX, AX
INC SI
LOOP LP1
MOV SUM1, BX
;------------------------------
LEA SI, BUF2
MOV AX, 0
MOV BX, 0
MOV CX, 100
LP2:
MOV AL, [SI]
ADD BX, AX
INC SI
LOOP LP2
MOV SUM2, BX
JMP _END
;------------------------------
_2:
CMP AL, 2
JNE _END

MOV SI, 0
MOV CX, 100
LP3:
MOV AL, BUF1[SI]
ADD AL, BUF2[SI]
MOV THIRD[SI], AL
INC SI
LOOP LP3
JMP _END

_END:
HLT

END

『柒』 匯編語言程序設計

一.
1.ADD BX,AX 或 ADD BL,AL ;類型配對
2.MOV AX,0A999H
3.MOV AX,0F8H
4.MOV AX,1234H 或 MOV AL,12H
5.MOV AX,[BX]
6.MOV DS,AX ;DS不能直接存立即數
7.ADD [BX],10 ;對
8.PUSH AX ;push不能直接push立即數
9.IN AL,DX
10.OUT 40H ,AL
11.MUL AL ;mul不能直接跟立即數
12.MOV [DI],AX ;mov不能兩個都是內存
13.ADD DI,AX
14.MOV DS,AX ;CS不可以改
15.SUB 10[SI],AX ;si di 不可以同時出現
二.
SUB [BP], BX 寄存器間接定址方式;30400H;
MOV [BX+DI], SI 基址變址定址方式;10400H;
ADD ES:[SI], DI 寄存器相對定址方式;20200H;
MOV 10[BX], DI 寄存器相對定址方式;10100H;
MOV DS:[100H], BX 相對基址變址定址方式;10100H

三.
3456H;5678H;1234H;5678H;

四.
1234H;2468H;0008H;1008H;0804H;0408H;0508H;0508H

五.
01H,31H,0FFH,00H,78H,56H,FFH,FFH,00H,24H,00H,0BH,00H,0BH,19H,09H,09H
(從左往右地址變大)
AX=3101H,BX=0023H

六.
1.
匯編語言:(AssemblyLanguage)是面向機器的程序設計語言。
匯編:把匯編語言翻譯成機器語言的過程稱為匯編。
匯編程序:把匯編語言書寫的程序翻譯成與之等價的機器語言程序的翻譯程序。匯編程序輸入的是用匯編語言書寫的源程序,輸出的是用機器語言表示的目標程序。匯編語言是為特定計算機或計算機系列設計的一種面向機器的語言,由匯編執行指令和匯編偽指令組成。採用匯編語言編寫程序雖不如高級程序設計語言簡便、直觀,但是匯編出的目標程序佔用內存較少、運行效率較高,且能直接引用計算機的各種設備資源。它通常用於編寫系統的核心部分程序,或編寫需要耗費大量運行時間和實時性要求較高的程序段。

2.

3.
單獨cmpsb就是逐一比較8個位;加上rep,循環比較,還是比較這8位啊

4.
是指在計算機執行期間,系統內發生任何非尋常的或非預期的急需處理事件,使得CPU暫時中斷當前正在執行的程序而轉去執行相應的時間處理程序。待處理完畢後又返回原來被中斷處繼續執行或調度新的進程執行的過程。

5.
宏和子程序都是為了簡化源程序的編寫,提高程序的可維護性,但是它們二者之間存在著以下本質的區別:
1、在源程序中,通過書寫宏名來引用宏,而子程序是通過CALL指令來調用;
2、匯編程序對宏通過宏擴展來加入其定義體,宏引用多少次,就相應擴展多少次,所以,引用宏不會縮短目標程序;而子程序代碼在目標程序中只出現一次,調用子程序是執行同一程序段,因此,目標程序也得到相應的簡化;
3、宏引用時,參數是通過「實參」替換「形參」的方式來實現傳遞的,參數形式靈活多樣,而子程序調用時,參數是通過寄存器、堆棧或約定存儲單元進行傳遞的;
4、宏引用語句擴展後,目標程序中就不再有宏引用語句,運行時,不會有額外的時間開銷,而子程序的調用在目標程序中仍存在,子程序的調用和返回均需要時間。
總之,當程序片段不長,速度是關鍵因素時,可採用宏來簡化源程序,但當程序片段較長,存儲空間是關鍵因素時,可採用子程序的方法來簡化源程序和目標程序。

七.
…………

『捌』 匯編程序設計

下面是我的一篇文件操作代碼,你修一下就可以用了。

include kcsj.mac
.model small
.386
.stack 200h
public prog1
.data
menu db 30 p(' '),'1.Display text file',0ah,0dh
db 30 p(' '),'2.Copy text file',0ah,0dh
db 30 p(' '),'3.Delete text file',0ah,0dh
db 30 p(' '),'4.The end',0ah,0dh
db 30 p(' '),'Please select one(1~4):','$'
prompt1 db 0ah,0dh,'File name:$'
prompt2 db 0ah,0dh,'Lines of page(1~25):$'
FNAME db 15,?,15 p(' ') ;存放文件名的緩沖區
out1 db 0ah,0dh,'Can not open file!$'
out2 db 0ah,0dh,'Can not read file!$'
out3 db 0ah,0dh,'Can not creat file!$'
out4 db 0ah,0dh,'Can not write file!$'
out5 db 0ah,0dh,'Can not delete file!$'
out6 db 0ah,0dh,'The file has been ed!$'
out7 db 0ah,0dh,'The file has been deleted!$'
buffer db ?
endcode db 0 ;錯誤標志
end1 db 0 ;結束標志
code1 dw ? ;原文件的代號
code2 dw ? ;新建文件的代號
sign db 0
ask1 db 0ah,0dh,'Input source file name:$'
ask2 db 0ah,0dh,'Input dest file name:$'
row db 23
info db 'Press ESC to quit,p to change page,anykey to continue!$'

.code
prog1 proc far
init
call mainshow
L1:mov ah,1
int 21h
cmp al,'1'
je display
cmp al,'2'
je
cmp al,'3'
je delete
jmp rtn1
display:call fdisp
call mainshow
mov end1,0
mov [row],23
mov endcode,0
jmp L1
:call f
call mainshow
mov endcode,0
mov sign,0
jmp L1
delete:call fdel
call mainshow
jmp L1
rtn1:ret
prog1 endp

mainshow proc near
scroll 0
cursor 10,0
strdisp menu
ret
mainshow endp

fdisp proc near ;分頁顯示
strdisp prompt1
call fopen
scroll 0 ;清屏
cursor 0,0 ;置游標
cmp endcode,1
jne cont
mov ah,7
int 21h
jmp ext0
cont:mov bx,code1
call fread
cmp endcode,1
je ext1
call fshow ;顯示
cmp end1,1
je ext1
jmp cont
ext1:mov ah,3eh ;關閉文件
mov bx,code1
int 21h
ext0:mov endcode,0
ret
fdisp endp

fopen proc near ;打開文件
call in_name
mov ah,3dh
mov al,0
int 21h
jnc next
mov endcode,1
strdisp out1
ret
next:mov bx,ax
mov code1,ax
ret
fopen endp

in_name proc near ;輸入文件名
lea dx,FNAME
mov ah,0ah
int 21h
lea bx,FNAME+2
mov ah,0
mov al,FNAME+1
add bx,ax
mov byte ptr [bx],0
add dx,2
ret
in_name endp

fread proc near ;讀取文件
mov ah,3fh
mov cx,1
lea dx,buffer
int 21h
jnc past
strdisp out2
jmp exit
past:cmp ax,0
je exit
ret
exit:mov ah,3eh
int 21h
mov endcode,1
ret
fread endp

fshow proc near ;顯示文件
mov dl,[buffer]
mov ah,2
int 21h
mov ah,3
mov bh,0
int 10h
cmp dh,[row]
jae d1
ret
d1:strdisp info
d2:mov ah,7
int 21h
cmp al,0
jz d2
cmp al,1bh ;按ESC退出
jz d4 ;退出關閉文件endcode=1
cmp al,70h ;按P提示輸入每頁行數
jnz d3
strdisp prompt2
call chtonum
mov [row],al
d3:scroll 0
cursor 0,0
ret
d4:mov end1,1
ret
fshow endp

chtonum proc near
mov bx,0
newchar:mov ah,1 ;輸入數字並轉換為十進制
int 21h
sub al,30h
jl goon
cmp al,9
jg goon
cbw
xchg ax,bx
mov cx,10d
mul cx
xchg ax,bx
add bx,ax
jmp newchar
goon:mov al,bl ;行數傳給AL
ret
chtonum endp

f proc near ;文件拷貝
scroll 0
cursor 0,0
strdisp ask2
call fcreat
cmp endcode,1
je over
mov code2,ax
strdisp ask1
call fopen
cmp endcode,1
je etn0
again:call fread
cmp endcode,1
je etn0
mov sign,1
push bx
cmp ax,0
je next2
mov cx,ax
mov bx,code2
mov ah,40h
int 21h
pop bx
jnc again
strdisp out4
ret
next2:mov ah,3eh
mov bx,code1
int 21h
etn0:mov ah,3eh
mov bx,code2
int 21h
cmp sign,1
jne over
strdisp out6
over:mov ah,7
int 21h
ret
f endp

fcreat proc near ;創建文件
call in_name
mov ah,3ch
mov cx,00
int 21h
jnc next1
mov endcode,1
strdisp out3
next1:ret
fcreat endp

fdel proc near ;刪除文件
scroll 0
cursor 0,0
strdisp prompt1
call in_name
mov ah,41h
int 21h
cmp ax,0
jnz quit
strdisp out5
mov ah,7
int 21h
ret
quit:strdisp out7
mov ah,7
int 21h
ret
fdel endp
end prog1

『玖』 匯編語言程序設計

; 本程序通過編譯,運行正確
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:顯示指定地址(Str_Addr)的字元串
; 入口:
; Str_Addr=字元串地址(要求在數據段)
; 用法: Output Str_Addr
; 用法舉例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
; 功能:輸出回車換行
Output_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Output_CTLF endp
; -----------------------------------------
; 功能:把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,並送顯示屏顯示
; 入口:AX=二進制數
; 出口:在當前游標位置顯示轉換後的ASCII碼數字
Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[6]
mov byte ptr [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 7 p(?)
Dec_ASCII EndP
; -----------------------------------------
; 功能:在N個位元組數組中查找字元CHAR,並記錄該字元出現的次數。
; 入口參數:
; si=一個N位元組數的字元串TABLE首地址
; cx=字元串長度,N
; ah=要查找的字元
; 出口參數:bl=該字元出現的次數
Find_Chr Proc Near
@@Find_Chr: lodsb
cmp al,ah ;是指定的字元?
jnz $+4 ;不是
inc bl ;是,計數
loop Find_Chr ;判斷下一個字元
ret
Find_Chr EndP
; -----------------------------------------
Prompt_Str db 'Please input a string: $' ;輸入字元串提示信息
No_String db 'The string is null.$' ;空字元串提示信息
Prompt_Chr db 'Please input a charactor: $' ;輸入字元提示信息
Prompt_CNT db 'The specified charactor in th string TABLE: $' ;指定字元出現次數提示信息
Start: push cs
pop ds
push cs
pop es ;使數據段、附加段與代碼段同段
cld
Input_Str: Output Prompt_Str ;提示輸入字元串
lea dx,TABLE ;字元串緩沖區地址
mov ah,0ah
int 21h
call Output_CTLF ;輸出一個回車、換行
lea si,TABLE[1] ;實際輸入的字元串長度地址
lodsb ;讀入這個長度N
test al,0ffh ;N=0?
jnz Read_Chr ;否,轉去輸入一個字元
Output No_String ;空字元串提示信息
jmp Input_Str ;重新輸入字元串
Read_Chr: Output Prompt_Chr ;提示輸入字元
mov ah,1 ;從鍵盤輸入一個字元
int 21h
cmp al,1bh
jz Exit_Proc ;若按鍵為Esc,則結束程序
cmp al,20h ;控制及通訊字元?
jb Read_Chr ;重新輸入字元
call Output_CTLF ;輸出一個回車、換行
call Output_CTLF ;輸出一個回車、換行
push ax
Output Prompt_CNT ;提示指定字元出現次數提示
pop ax
mov ah,al ;指定的字元送ah保存
lea si,TABLE[1] ;實際輸入的字元串長度地址
lodsb ;讀入這個長度N
mov cl,al
xor ch,ch ;N=cx
xor bl,bl ;計數器,計數指定字元在字元串中出現的次數
call Find_Chr ;在N個位元組數組中查找字元CHAR,並記錄該字元出現的次數
mov al,bl
xor ah,ah
call Dec_ASCII ;把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,並送顯示屏顯示
Exit_Proc: mov ah,4ch ;結束程序
int 21h
TABLE db 255 ; 字元串緩沖區
Code ENDS
END Start ;編譯到此結束

閱讀全文

與匯編程序設計相關的資料

熱點內容
linuxexecl函數 瀏覽:723
程序員異地戀結果 瀏覽:372
剖切的命令 瀏覽:226
干什麼可以賺錢開我的世界伺服器 瀏覽:288
php備案號 瀏覽:988
php視頻水印 瀏覽:165
怎麼追程序員的女生 瀏覽:486
空調外壓縮機電容 瀏覽:77
怎麼將安卓變成win 瀏覽:457
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328
程序員留學移民 瀏覽:52
梁中間部位箍筋加密區 瀏覽:119
頻譜分析pdf 瀏覽:752
樂2怎麼升級安卓70 瀏覽:174