当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

汇编语言用冒泡法排序

更新:01-06 整理:39baobao.com
字体:

[用汇编语言实现]感觉有点别别翘的意思。 ;y1=x1*a1+x2*a2+x3*a3+x4*a4+x5*a5 ;结果正确。 data segment x1 db 2 a1 db 7 x2 db 3 a2 db 9 x3 db 4 a3 db 2 x4 db 5 a4 db 3 x5 db 6 a5 db 8...+阅读

楼主写了那么多,而且格式还有差别,不知道具体是几个

下面用10个举例

DATA SEGMENT

DAT DB 20,-10,80,-5,-70,-9,125,-15,0,40

COUNT DB 10,10

DATA ENDS

;

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA

START:MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV BL,1

LP1: CMP BL,0

JE LP4

XOR BL,BL

MOV CL,COUNT

DEC CL

push cx

LEA DI,DAT

LP2:MOV AL,[DI]

CMP AL,[DI+1]

JLE LP3

XCHG [DI+1],AL

MOV [DI],AL

MOV BL,1

LP3:INC DI

LOOP LP2

pop cx

mov count,cl

JMP LP1

LP4:MOV CL,10

LEA DI,DAT

SC:MOV AX,0

MOV BH,2

MOV AL,[DI] ;取数

CMP AL,0 ;如果是正数则跳

JGE NEXT

NEG AL ;如果是负数 先将 al中的负数取补转成对应的 正数

push ax

MOV AH,02H ;同时显示 负数的标记 '-'

MOV DL,'-' ;注意这个时候 ax 的值会因为 21h中断的调用而改变:) 所以先要保存起来

INT 21H ;就是说 int 21h 中断将会有一个返回值

pop ax ;以前我也出现过一样的问题,后来调试的时候才发现原来某些中断之后ax会改变

NEXT:XOR AH,AH

DIV COUNT+1 ;除以 10 取 十位

MOV DH,AH ;ah 是余数 al 是商

ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H ;显示 十位上的数值(如果只是两位数的话)

MOV AL,DH

XOR AH,AH

; DIV COUNT+1 ;这为什么还要除以10?如果说是处理3位数的话,应该把商除10而不是把余数除10

ADD AX,3030H

MOV DL,AL ;所以最好在显示时 判断是否是 大于 100 或者 小于 100 再根据判断结果来处理 DIV

; MOV BL,AH ;AH才是所要的,故不应该再打印 AL(商)值了, 总之这里在处理 位数的显示时有点问题

;在这里,如果是2位数可以正确显示如果是3位则不能,所以最后的125显成了 OUTP: MOV AH,2

INT 21H

DEC BH

JZ XT

MOV DL,BL ;显示个位数

JMP OUTP

XT: DEC CL

JZ DONE

INC DI

JMP SC

DONE: MOV AH,4CH

INT 21H

CODE ENDS

END START

本文地址:https://www.39baobao.com/show/29_23602.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

汇编语言编程实现以下功能1.mov cl,2 shl ax,cl 2.sub ax,bx 3.and ax,cx 4.xchg bx,ax 5.mov al,9 add al,8 sub al,7 mov x,al 6.code segment assume cs:code start:mov ah,1 int 21h sub al,20h...

汇编语言程序实现一下C效果mov ax, m mov dx, n cmp ax, dx je label1 jl label2 sub ax, dx jmp label1 label2: sub dx, ax label2: label1: 有点小错误,修改了 mov ax, m mov dx, n cmp ax, dx je l...

汇编语言实现小数的计算单片机好像没有浮点数的计算指令吧? 我想到一个不太好的方法,你凑合一下吧 V0应该是整数吧? 这样现将V0乘上10,再减去4,然再在乘上100000,最后除以19530 这样就全部转化成整数的运...

汇编语言编写一个程序DATA SEGMENT; CR db 0dh,0ah,'$' SSP db 20h,'$' string1 db 'plese input the number:$' string2 db 'the number is(H):$' string3 db 'the number is(B):$' data1 dw 0...

汇编语言实现以下输出; eg0000.asm in Windows Console include io32.inc .data in_msg4 byte '请选择0-3并按回车确定:',0 in_msg0 byte '您选择的频率为f0,谢谢!',0 in_msg1 byte '您选择的频率为f1...

怎么做啊?!二编程题 1用汇编语言编写程序编程实现以下功stud struc name db ' ' eng db ?math db ?comp db ?phy db ?sum dw ?aver db ?stud ends code segment assume cs:code org 100h start:jmp bbb studs studstudstudstudbbb...

汇编语言子程序调用简单点说,call指令在跳转前保存当前指令地址,而jmp一类的指令不保存当前指令的地址。 详细点说: call指令在跳转前会在栈中保存当前的程序计数器(IP)的值(有必要的话还要保存CS),保...

汇编语言做冒泡法排序TITLE BubbleSort Procedure INCLUDE Irvine32.inc .code BubbleSort PROC USES eax ecx esi, pArray:PTR DWORD, Count:DWORD mov ecx,Count dec ecx L1: push ecx mov esi...

怎么用汇编语言写冒泡排序啊;===缓冲区定义例子=== BUF DB '256489713' N EQU $-BUF ;===起泡排序代码例子=== lea si,BUF ;缓冲区地址 mov cx,N ;缓冲区中要排序的数值个数 sss_lp1: dec cx jz sss_out pu...