c#给定二维数组按升序排序

Problem: Write a program in 8086 microprocessor to sort numbers in ascending order in an array of n numbers, where size n is stored at memory address 2000 : 500 and the numbers are stored from memory address 2000 : 501.

问题:在8086微处理器中编写一个程序,以按n个数字的升序对数字进行排序,其中大小n存储在内存地址2000:500中,而数字存储在内存地址2000:501中。

Algorithm:

算法:

  1. Load data from offset 500 to register CL (for count).

    将数据从偏移500加载到寄存器CL(用于计数)。

  2. Travel from starting memory location to last and compare two numbers if first number is greater than second number then swap them.

    从起始存储位置移动到最后一个位置,如果第一个数字大于第二个数字,则比较两个数字,然后交换它们。

  3. First pass fix the position for last number.

    首遍确定最后一个号码的位置。

  4. Decrease the count by 1.

    将计数减少1。

  5. Again travel from starting memory location to (last-1, by help of count) and compare two numbers if first number is greater than second number then swap them.

    再次从起始存储位置移动到(last-1,借助计数),如果第一个数字大于第二个数字,则比较两个数字,然后交换它们。

  6. Second pass fix the position for last two numbers.

    第二遍确定最后两个数字的位置。

  7. Repeated.

    重复。

Program:

程序:

ADDRESS MNEMONICS COMMENTS
400 MOV SI, 500 SI ← 500
403 MOV CL, [SI] CL ← [SI]
405 DEC CL CL ← CL-1
407 MOV SI, 500 SI ← 500
40A MOV CH, [SI] CH ← [SI]
40C DEC CH CH ← CH-1
40E INC SI SI ← SI+1
40F MOV AL, [SI] AL ← [SI]
411 INC SI SI ← SI+1
412 CMP AL, [SI] AL-[SI]
414 JC 41C JUMP TO 41C IF CY=1
416 XCHG AL, [SI] SWAP AL AND [SI]
418 DEC SI SI ← SI-1
419 XCHG AL, [SI] SWAP AL AND [SI]
41B INC SI SI ← SI+1
41C DEC CH CH ← CH-1
41E JNZ 40F JUMP TO 40F IF ZF=0
420 DEC CL CL ← CL-1
422 JNZ 407 JUMP TO 407 IF ZF=0
424 HLT END
地址 记忆 注释
400 MOV SI,500 SI←500
403 MOV CL,[SI] CL←[SI]
405 DEC CL CL←CL-1
407 MOV SI,500 SI←500
40A MOV CH,[SI] CH←[SI]
40度 DEC CH CH←CH-1
40E INC SI SI←SI + 1
40楼 MOV AL,[SI] AL←[SI]
411 INC SI SI←SI + 1
412 CMP AL,[SI] AL- [SI]
414 JC 41C 如果CY = 1,则跳至41C
416 XCHG AL,[SI] 交换AL和[SI]
418 DEC SI SI←SI-1
419 XCHG AL,[SI] 交换AL和[SI]
41B INC SI SI←SI + 1
41C DEC CH CH←CH-1
41E JNZ 40F 如果ZF = 0,则跳至40F
420 DEC CL CL←CL-1
422 JNZ 407 如果ZF = 0,则跳至407
424 HLT 结束

Explanation:

说明:

  1. MOV SI, 500: set the value of SI to 500.

    MOV SI,500:将SI的值设置为500。

  2. MOV CL, [SI]: load data from offset SI to register CL.

    MOV CL,[SI]:将数据从偏移量SI加载到寄存器CL。

  3. DEC CL: decrease value of register CL BY 1.

    DEC CL:将寄存器CL的值减1。

  4. MOV SI, 500: set the value of SI to 500.

    MOV SI,500:将SI的值设置为500。

  5. MOV CH, [SI]: load data from offset SI to register CH.

    MOV CH,[SI]:将数据从偏移量SI加载到寄存器CH。

  6. DEC CH: decrease value of register CH BY 1.

    DEC CH:将寄存器CH的值减1。

  7. INC SI: increase value of SI BY 1.

    INC SI:SI的值增加1。

  8. MOV AL, [SI]: load value from offset SI to register AL.

    MOV AL,[SI]:从偏移量SI加载到寄存器AL的值。

  9. INC SI: increase value of SI BY 1.

    INC SI:SI的值增加1。

  10. CMP AL, [SI]: compares value of register AL and [SI] (AL-[SI]).

    CMP AL,[SI]:比较寄存器AL和[SI](AL- [SI])的值。

  11. JC 41C: jump to address 41C if carry generated.

    JC 41C:如果产生进位,则跳转到地址41C。

  12. XCHG AL, [SI]: exchange the contents of register AL and SI.

    XCHG AL,[SI]:交换寄存器AL和SI的内容。

  13. DEC SI: decrease value of SI by 1.

    DEC SI:将SI的值减1。

  14. XCHG AL, [SI]: exchange the contents of register AL and SI.

    XCHG AL,[SI]:交换寄存器AL和SI的内容。

  15. INC SI: increase value of SI by 1.

    INC SI:将SI的值增加1。

  16. DEC CH: decrease value of register CH by 1.

    DEC CH:将寄存器CH的值减1。

  17. JNZ 40F: jump to address 40F if zero flat reset.

    JNZ 40F:如果归零平面复位,则跳转到地址40F。

  18. DEC CL: decrease value of register CL by 1.

    DEC CL:将寄存器CL的值减1。

  19. JNZ 407: jump to address 407 if zero flat reset.

    JNZ 407:如果归零平面复位,则跳转到地址407。

  20. HLT: stop.

    HLT:停止。

翻译自: https://www.includehelp.com/embedded-system/sort-numbers-in-ascending-order-in-an-array.aspx

c#给定二维数组按升序排序

c#给定二维数组按升序排序_在数组中按升序对数字进行排序| 8086微处理器相关推荐

  1. python合并列表并按升序排序_在python中按升序合并两个排序的链接列表:单链接列表指针更新问题...

    你需要分配 l1 和 l2 tempNode.val L1 节点本身到 tempNode # Definition for singly-linked list. class ListNode: de ...

  2. [转载] python对列表单词排序_计算列表中单词的频率并按频率排序

    参考链接: Python程序按字母顺序对单词进行排序 您可以使用from collections import Counter 它支持Python 2.7,在这里信息 1.>>>c ...

  3. php二维数组排序 按照指定的key 对数组进行排序

    2019独角兽企业重金招聘Python工程师标准>>> /*** @desc arraySort php二维数组排序 按照指定的key 对数组进行排序* @param array $ ...

  4. 用ThoughtWorks.QRCode生成二维码时出现“索引超出了数组界限”的错误

    用ThoughtWorks.QRCode生成二维码时出现"索引超出了数组界限"的错误 字符串较长的情况下,用ThoughtWorks.QRCode生成二维码时出现"索引超 ...

  5. ThoughtWorks.QRCode 生成QR二维码时提示“索引超出了数组界限”的原因和解决方法

    ThoughtWorks.QRCode 生成QR二维码时提示"索引超出了数组界限"的原因和解决方法 参考文章: (1)ThoughtWorks.QRCode 生成QR二维码时提示& ...

  6. 城市内涝一维二维耦合技术及在城市排水防涝领域中的实践应用

    本次将聚焦于综合利用GIS.CAD及自研慧天排水数字化分析平台等工具高效地进行大规模城市排水系统水力模型的建立.在讲解过程中会以案例的形式演示与其他软件(如AutoCAD.ArcGIS.MS Offi ...

  7. mysql二维数据转一维存_二维数组转一维数组

    //二维转一维 var arr=[ [1,2,3], [2,5,6,7], [234,234,545] ] function dir(arr) { var result=[]; for(var r=0 ...

  8. CDQ分治(二维CDQ 、三维CDQ+树状数组、四维CDQ+CDQ+树状数组)

    CDQ分治 CDQ分治相较于普通分治,多了左区间处理后对于右区间的影响. 利用这一点,CDQ分治可以用来做很多数据结构的题目(树状数组.线段树),加一个log的时间复杂度来优化一维. 操作: 假设有两 ...

  9. vb 实现二维数组(矩阵)转置。_笃学不倦|数组的定义

    Hi~ o(* ̄▽ ̄*)ブ艾睿宝迪,又和大家见面了.这节课讲讲关于数组的那些事儿! 咳咳,今天这节课非常重要,请大家认真听讲并记好笔记呦!现在老司机带大家开车了! 数组可以看成是一种特殊的线性表,其特 ...

最新文章

  1. Boost:基于Boost的阻塞udp echo的测试程序
  2. 计算机网络实验报告4icmp,实验04-ip、icmp协议分析
  3. 怎么在mysql创建数据库怎么加入学号_数据库怎么创建学生信息表
  4. accsess转成mysql语句_轻松教你SQL转ACCESS
  5. Android 如何调用系统默认浏览器访问
  6. sql语句执行步骤详解
  7. 使用Python往Elasticsearch插入数据
  8. java中的step_Java中finalize()
  9. USDC流通量已经超过33亿
  10. 网络安全以及常见的网络攻击
  11. 论文笔记_SLAM_VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
  12. 智慧校园APP开发的简要功能
  13. 华为的PBC个人绩效评价模板
  14. 【29】CISC和RISC:为什么手机芯片都是ARM?
  15. 专门为某种用途设计的计算机称为,专门为某种用途而设计的计算机,称为( )计算机。...
  16. 教你如何创建一个免费的网站
  17. 【产业互联网周报】百度、金山、用友发布最新财报,披露智能云相关业务进展...
  18. dlopen failed: couldn‘t map “/data/xxxx.so“ segment 1: Permission denied
  19. 青海师范大学计算机专业分数线,青海师范大学2018年各省及各专业录取分数线及最低录投档线【理科 文科】...
  20. java微信公众号中文乱码,java微信公众平台获取用户信息中文乱码解决办法(第十五课)...

热门文章

  1. python实现mini-batch_Mini-Batch 、Momentum、Adam算法的实现
  2. mysql ddl dql_MySQL的DDL和DML及其DQL数据库操作
  3. java 监听窗口是否改变_JAVA项目监听文件是否发生变化
  4. python 日志不会按照日期分割_django实现日志按日期分割
  5. Spring框架IOC和AOP的实现原理(概念)
  6. 测试:脱离VS2010使用自动化测试时出现 6DA215C2-D80D-42F2-A514-B44A16DCBAAA 错误
  7. django 中静态文件项目加载问题
  8. zt:缓存一致性(Cache Coherency)入门 cach coherency
  9. MathType与Origin是怎么兼容的
  10. 2012年3月编程语言排行榜:JavaScript超越Perl和Python