【汇编语言实战】switch选择

试用汇编语言编写程序,该程序具有如下菜单:

[1] 选择排序[2] 冒泡排序
[3] 插入排序[4] 快速排序
[5] 堆排序[6] 全排列
[7] 汉诺塔问题[8] 素数环
[9] 插入排序[10] 判定集合元素
[11] 整数拆分[12] 八皇后问题
[13] 迷宫问题[14]二分查找

请输入选项(1~13): 待输入选项号后,输出所选择的选项功能描述
例如:输入1,则输出:选择排序。

C语言描述:

#include <stdio.h>

// 函数声明
void selectionSort();
void bubbleSort();
void insertionSort();
void quickSort();
void heapSort();
void permutation();
void hanoi();
void primeRing();
void setElements();
void integerPartition();
void eightQueens();
void maze();
void binarySearch();

int main() {
    int option;
    
    // 显示菜单
    printf("| [1] 选择排序   | [2] 冒泡排序      |\n");
    printf("| [3] 插入排序   | [4] 快速排序      |\n");
    printf("| [5] 堆排序     | [6]  全排列       |\n");
    printf("| [7] 汉诺塔问题 | [8] 素数环        |\n");
    printf("| [9] 插入排序   | [10] 判定集合元素 |\n");
    printf("| [11] 整数拆分  | [12] 八皇后问题   |\n");
    printf("| [13] 迷宫问题  | [14]二分查找      |\n");

    printf("请输入选项(1~14):");
    scanf("%d", &option);
    
    // 根据用户选择执行相应功能
    switch(option) {
        case 1:
            selectionSort();
            break;
        case 2:
            bubbleSort();
            break;
        case 3:
            insertionSort();
            break;
        case 4:
            quickSort();
            break;
        case 5:
            heapSort();
            break;
        case 6:
            permutation();
            break;
        case 7:
            hanoi();
            break;
        case 8:
            primeRing();
            break;
        case 9:
            insertionSort();
            break;
        case 10:
            setElements();
            break;
        case 11:
            integerPartition();
            break;
        case 12:
            eightQueens();
            break;
        case 13:
            maze();
            break;
        case 14:
            binarySearch();
            break;
        default:
            printf("无效选项!\n");
    }

    return 0;
}

// 下面是各个功能函数的实现,根据需要补充函数体

void selectionSort() {
    printf("选择排序\n");
}

void bubbleSort() {
    printf("冒泡排序\n");
}

void insertionSort() {
    printf("插入排序\n");
}

void quickSort() {
    printf("快速排序\n");
}

void heapSort() {
    printf("堆排序\n");
}

void permutation() {
    printf("全排列\n");
}

void hanoi() {
    printf("汉诺塔问题\n");
}

void primeRing() {
    printf("素数环\n");
}

void setElements() {
    printf("判定集合元素\n");
}

void integerPartition() {
    printf("整数拆分\n");
}

void eightQueens() {
    printf("八皇后问题\n");
}

void maze() {
    printf("迷宫问题\n");
}

void binarySearch() {
    printf("二分查找\n");
}

输出结果:

在这里插入图片描述

汇编语言:

include irvine32.inc
.data
menu db '[1] 选择排序   [2] 冒泡排序',0Dh,0Ah
     db '[3] 插入排序   [4] 快速排序',0Dh,0Ah
     db '[5] 堆排序     [6] 全排列',0Dh,0Ah
     db '[7] 汉诺塔问题 [8] 素数环',0Dh,0Ah
     db '[9] 整数素分解	[10] 判定集合元素',0Dh,0Ah
     db '[11] 整数拆分 	[12] 八皇后问题',0Dh,0Ah
     db '[13] 迷宫问题  [14] 二分查找',0Dh,0Ah
     db '请输入选项(1~14):',0
strMsg1 db '选择排序',0
strMsg2 db '冒泡排序',0
strMsg3 db '插入排序',0
strMsg4 db '快速排序',0
strMsg5 db '堆排序',0
strMsg6 db '全排列',0
strMsg7 db '汉诺塔问题',0
strMsg8 db '素数环',0
strMsg9 db '整数素分解',0
strMsg10 db '判定集合元素',0
strMsg11 db '整数拆分',0
strMsg12 db '八皇后问题',0
strMsg13 db '迷宫问题',0
strMsg14 db '二分查找',0
funaddrs dd offset strMsg1
	dd offset strMsg2
	dd offset strMsg3
	dd offset strMsg4
	dd offset strMsg5
	dd offset strMsg6
	dd offset strMsg7
	dd offset strMsg8
	dd offset strMsg9
	dd offset strMsg10
	dd offset strMsg11
	dd offset strMsg12
	dd offset strMsg13
	dd offset strMsg14
.code
main proc
	mov  edx,offset menu
	call writestring
	call readint
	cmp eax,1
	jl  err
	cmp eax,14
	jg  err
	sub eax,1	
        mov edx,funaddrs[4*eax]
	call writestring
	jmp final
err:
final:
	exit
main endp
end main
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏,祝你平安喜乐。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值