組合語言的知識點總結

2021-05-24 01:11:14 字數 4236 閱讀 3187

1樓:荔菲元青

;輸出字串函式 prompt proc mov ah, 09h int 21h ret prompt endp ;輸出回車換行符函式 crlf proc mov dl, 0dh mov ah, 2 int 21h mov dl, 0ah mov ah, 2 int 21h ret crlf endp ;輸出空格符函式 blank proc mov dl, 20h mov ah, 2 int 21h ret blank endp ;二進位制的輸入函式 ;輸入範圍0~1111111111111111 inb proc push cx inbstart: mov bx, 0 accept: mov ah, 1 int 21h cmp al, 0dh je inbexit cmp al, 30h jl inberr cmp al, 31h ja inberr sub al, 30h mov ah, 0 mov ax, bx mov cx, 2 mul cx add bx, ax jmp accept inbexit:

pop cx ret inberr: lea dx, 'bad format...$' call prompt jmp inbstart inb endp ;八進位制的輸入函式 ;範圍:

0-177777 inq proc push cx pop cx ret inq endp ;十進位制的輸入函式 ;範圍:0-65535 ind proc push cx indstart: mov bx, 0 accept:

mov ah, 1 int 21h cmp al, 0dh je indexit cmp al, 30h jl inderr cmp al, 39h ja inderr sub al, 30h mov ah, 0 xchg ax, bx mov cx, 10 mul cx add bx, ax jmp accept indexit: pop cx ret inderr: mov dx, offset 'bad format...

$' call prompt jmp indstart ind endp ;十六進製制的輸入函式 ;範圍:0-0ffffh inh proc push cx inhstart: mov bx, 0 accept:

mov ah, 1 int 21h cmp al, 0dh je inhexit cmp al, 30h jl inherr cmp al, 66h ;'f' ja inherr cmp al, 39h ;'9' jl num cmp al, 41h ;'a' jl inherr cmp al, 46h ;'f' ja lowercase sub al, 7h ;'a'-':'=7h jmp num lowercase: cmp al, 61h ;'a' jl inherr cmp al, 66h ;'f' ja inherr sub al, 27h ;'a'-':

'=27h num: and ax, 0fh xchg ax, bx mov cx, 16 ;mov cx, 4 mul cx ;shl ax add bx, ax jmp accept inhexit: pop cx ret inherr:

lea dx, 'bad format...$' call prompt jmp inhstart inh endp ;二進位制的輸出函式 ;範圍:0-1111111111111111 ;call:

要輸出的數字放在bx中傳入 outb proc push cx mov nozero, 0 ;like a boolean variable mov cl, 16 nextbit: mov dl, 0 test bx, 8000h je disp mov nozero, 1 mov dl, 1 disp: cmp nozero, 0 je continue add dl, 30h mov ah, 2 int 21h continue:

shl bx, 1 loop nextbit cmp nozero, 0 jne outbexit mov dl, 30h ;output '0' because the number in bx is zero mov ah, 2 int 21h outbexit: pop cx ret outb endp ;八進位制的輸出函式 ;範圍:0-177777 ;call:

要輸出的數字放在bx中傳入 ;十進位制的輸出函式 ;範圍:0-65535 ;call: 要輸出的數字放在bx中傳入 outd proc push cx mov nozero, 0 ;like a boolean variable mov cx, 10000 call decdiv mov cx, 1000 call decdiv mov cx, 100 call decdiv mov cx, 10 call decdiv mov cx, 1 call decdiv cmp nozero, 0 jne outdexit mov dl, 30h mov ah, 2 int 21h outdexit:

pop cx ret ;---sub proc--- ;call: 被除數在bx傳入,除數在cx傳入 ;ret: 列印商,餘數送bx decdiv proc mov ax, bx mov dx, 0 div cx mov bx, dx mov dl, al cmp dl, 0 jne dispdigit cmp nozero, 0 jne dispdigit jmp decdivexit dispdigit:

mov nozero, 1 add dl, 30h mov ah, 2 int 21h decdivexit: ret decdiv endp ;---sub proc--- outd endp ;十六進製制的輸出函式 ;範圍:0-0ffffh(或0-0ffffh) ;輸出十六進製製用大寫字母(a-f表示) ;call:

要輸出的數字放在bx中傳入 outh proc push cx mov ch, 4 mov nozero, 0 ;like a boolean variable next4bits: mov cl, 4 rol bx, cl mov al, bl and al, 0fh cmp al, 10 jl dispdigit add al, 7h ;if disp 'a-f' ,should add 27h dispdigit: cmp al, 0 jne dispnozero cmp nozero, 0 je continue dispnozero:

mov nozero, 1 add al, 30h mov dl, al mov ah, 2 int 21h continue: dec ch jnz next4bits cmp nozero, 0 jne outhexit mov dl, 30h mov ah, 2 int 21h outhexit: pop cx ret outh endp ;氣泡排序函式(降序)(sort in dw array<2 bytes>) bubble proc push cx mov cx, count ;notice:

count = nums.length-1 outloop: mov di, cx mov si, 0 inloop:

mov ax, nums[si] cmp ax, nums[si+2] ;nums[si+1], if sort in 8 byte jae incontinue xchg ax, nums[si+2] ;nums[si+1], if sort in 8 byte xchg ax, nums[si] incontinue: add si, 2 ;add si, 1, if sort in 8 byte loop inloop mov cx, di loop outloop pop cx ret bubble endp ;查詢最小ascii碼 ;call: 被查詢ascii串碼放在buff中 ;ret:

找到的最小ascii碼將被放在minascii中返回 getmin proc push cx lea si, buff+2 mov cl, num+1 and cx, 0fh mov bl, [si] next: inc si cmp bl, [si] jle continue mov bl, [si] continue: loop next mov minascii, bl pop cx ret getmin endp ;統計非字元和非數字的個數 ;call:

被統計ascii串碼放在buff中 ;ret: 統計的數字將被放在sum中返回 count proc push cx mov cl, buff+1 lea si, buff+2 mov sum, 0 next: mov al, [si] cmp al, '0' ;30h jb yes cmp al, '9' ;39h jb no cmp al, 'a' ;41h jb yes cmp al, 'z' ;5ah jb no cmp al, 'a' ;61h jb yes cmp al, 'z' ;7ah jb no jmp yes yes:

inc byte ptr sum no: inc si loop next pop cx ret count endp

記得採納啊

組合語言資料偽指令DUP用法,組合語言中的dup有什麼作用

茲斬鞘 10 dup 1 重複定義了10個字元素,初始值為1,佔用10 2 20個位元組。5 dup 重複定義了5個字元素 其初始值實際為0 佔用5 2 10個位元組 因此總共佔用30個位元組。具體分析 在彙編定義變數的時候會用到dup,變數名 型別 初值表,dup用於把一個相同值賦值若干次,重複次...

有沒有中考化學知識點總結,中考化學知識點總結,(詳細點的)

席桃吭 現在很多老師授課只是一味做題,不注重對學生知識的歸納總結,這時候一份化學必考知識點總結就顯得尤為重要。最近一個叫做點心優課化學訓練營的gong眾號做的不錯,於汐老師的課可以的,迅速提分,加油!中考化學知識點總結。急需初三化學中考知識點總結 初三化學知識點總結 真貝潮聽南 你在哪個城市?每個城...

高中文科知識點總結

歷史 中古史 重點是大一統時候的經濟 文化 外交和民族關係 然後是幾個朝代的比較,如秦和隋的共同點 唐和漢的共同點 中國近代史 共產黨和國民黨的發展過程 政治變革和鬥爭以及不同的政治變 革和鬥爭的比較 反抗侵略的歷程 民族經濟發展的歷程 中國現代史 經濟的發展 黨的各個會議 文革你可以忽略掉的 和其...