組合語言 練習題3 2

2021-09-16 23:05:03 字數 1717 閱讀 3173

內容:

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...