內容:
tab開始的單元中存放
n個位元組無符號數,請按照從大到小排序後,存入
dat單元中。(注意
:tab
資料保持不變)
tab db x1,……,xn
dat db n dup(?)
要求:熟練掌握迴圈程式設計方法
這個屬於非就地排序,我利用的是冒泡的思想——每增加乙個值,冒泡一遍。
附上c++**:
// bubblesort.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。
//#include "pch.h"
#include using namespace std;
int a[100];
int b[100];
void swap(int i, int j)
void bubblesort(int n) }}
int main()
bubblesort(n);
for (int i = 0; i < n; i++)
system("pause");}/*
51 6 -2 0 4
*/
彙編**:
include irvine32.inc
.data
tab db 55,33,23,6,7,0,12,4,12,45
cnt equ ($-tab)
org 20h
dat db 10 dup(?)
sd db ?
.code
start:
call bubblesort
xor esi,esi
xor eax,eax
mov ecx,cnt
print_again:
mov al,dat[esi]
call writeint
call crlf
inc esi
loop print_again
exit
swap proc
xor eax,eax
mov al,dat[ecx]
xchg al,dat[ecx+1]
xchg al,dat[ecx]
retswap endp
bubblesort proc
xor esi,esi
xor ebx,ebx
xor eax,eax
sort_again:
cmp esi,cnt
jge over
;b[j]=a[i]
mov al,tab[esi]
mov dat[ebx],al
;j=i-1
mov ecx,ebx
dec ecx
;這個again是冒泡
again:
cmp ecx,0
jl next
mov al,dat[ecx]
cmp al,dat[ecx+1]
jge next
call swap
dec ecx
jmp again
next:
inc esi
inc ebx
jmp sort_again
over:
retbubblesort endp
end start
組合語言 練習題5 2
將從鍵盤輸入的n 個有符號數儲存到陣列 tab,找出 n個有符號數中絕對值大於 x的最小負奇數存放到 min單元,如果沒有找到則 min單元存放 0。在終端上顯示 min的絕對值。tab dd x1,xn x dd xx 無符號數,自己設定 min dd 要求 1 求資料 min的功能用子程式實現 ...
組合語言 練習題4 2
內容 從鍵盤輸入一串字母並儲存在 string 開始的位址單元,要求將該字串中的大寫字母轉化為小寫字母後用子程式實現在終端上依次顯示該串字母的 ascii碼。string db n dup 要求 熟練掌握子程式設計方法,畫子程式 主程式流程圖 函式說明 readstring edx 存放字串首位址 ...
movsw 彙編 彙編練習題
16.下面指令執行後,總是使cf of 0的是 a.and b.neg c.not d.inc 17.為使cx 1時,執行 jz minus 轉至標號minus而編制了一指令,其中錯誤的是 a.inc cx b.sub cx,offffh c.and cx,offffh d.xor cx,offff...