汇编经典小程序

合集下载

基础的汇编语言小程序

基础的汇编语言小程序

基础的汇编语言小程序

1.1 Hello World !程序(完整段)

(注:所有的标点符号以及空格回车均为英文输入法状态下的,否则报错!)

DATAS SEGMENT

STRING DB ‘Hello World !’,13,10,’$’

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS

START:

MOV AX,DATAS

MOV DS,AX

LEA DX,STRING

MOV AH,9

INT 21H

MOV AH,4CH

INT 21H

CODES ENDS

END START

1.2 Hello World !程序(简化段)

.MODEL SMALL

.DATA

STRING DB’Hello World !’,13,10,’$’

.STACK

.CODE

.STARTUP

LEA DX,STRING

MOV AH,9

INT 21H

.EXIT

END

2.1完整段的求3+5的和

DATA SEGMENT

FIVE DB 5

DATAS ENDS

STACKS SEGMENT

DB 128 DUP(?)

STACKS ENDS

CODES SEGMENT

ASSUME CD:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS

MOV DS,AX

MOV AL,FIVE

ADD AL,3

ADD AL,30H

MOV DL,AL

MOV AH,2

MOV AH,4CH

INT 21H

CODES ENDS

END START

2.2;简化段的求3+5的和.MODEL SMALL

.DATA

汇编小程序

汇编小程序

;#Mode=DOS;MASMPlus 单文件代码模板 - 纯 DOS 程序;--------------------------------------------------------------------;单个文件需要指定编译模式,否则默认是EXE方式,在系统设置中可以设置默认是DOS还是Windows.;编译模式自带了DOS/COM/CON/EXE/DLL/LIB这几种,如果有必要,可以更改ide.ini添加新的编译模式;当然,更好的是创建为一个工程.更方便及易于管理,使用方法:按Ctrl多选->创建工程.必须有多个文件assume cs:code,ds:data,ss:stackdata segmentbmul db 0mulshu db 0data endsstack segmentdw 128 dup(?)stack endscode segment;寄存器初始化start: mov ax,datamov ds,axmov ax,stackmov ss,axmov sp,128mov cx,9mov al,bmul ;ax存放被乘数mov bl,mulshu ;bx存放乘数mov ax,0;用两个循环计算并且显示s1:inc axmov bx,0s2:inc bxpush axpush bxadd al,30hadd bl,30hmov dl,almov ah,2int 21hmov dl,42mov ah,2int 21hmov dl,blmov ah,2int 21hmov dl,61mov ah,2int 21hpop bxpop axpush axpush bxmul blcall show ;显示计算结果mov ah,02mov dl,32int 21h ;显示空格pop bxpop axcmp ax,bxjnz s2call hh ;回车换行loop s1;查看结果并返回dosmov ah,01int 21hmov ah,4chint 21h;;功能:回车换行hh:push axpush dxmov ah,02mov dl,0dhint 21hmov ah,02mov dl,0ahint 21hpop dxpop axret;;功能:把乘积转换为字符show:push dxpush bxpush axcall diw ;实施除法除10获取积的各个位数push axcmp al,0jz ok1add al,30hmov dl,almov ah,02int 21hok1:pop axmov bx,axadd ah,30hmov dl,ahmov ah,02int 21hcmp bl,0ja ok2mov dl,32mov ah,02int 21hok2:pop axpop bxpop dxret;;功能:求积的位数,ah存放个位,al存放十位diw:push bxmov bx,10div blpop bxretcode endsend start

汇编语言程序经典案例100例

汇编语言程序经典案例100例
汇编语言程序经典案例100例 2023-08-04
当然可以帮你制作PPT!以下是关于《汇编语言程序经典案例 100例》的一份PPT大纲,以Markdown代码框的形式展示。你 可以根据这个大纲,进一步丰富内容,使其达到最少2500字 。
```markdown 汇编语言程序经典案例100例
01 汇编语言程序经典案例100例
案例九:中断处理
编写处理外部中断的汇编程序 探讨中断的概念、处理流程以及在汇编中的实现
案例十:多任务处理
实现简单的多任务处理程序 介绍多任务处理的基本原理和汇编中的实现方式 ... (继续补充案例,直至达到2500字的要求) ```
THE END THANKS
案例二:计算器
实现一个简单的计算器程序,支持加减乘除运算 展示汇编中的数值处理和条件分支
案例三:字符逆序
编写程序将输入的字符串逆序输出 探讨字符串处理和循环结构在汇编中的应用
案例四:素数判断
判断输入的数字是否为素数 展示如何进行数值计算和判断,并介绍汇编中的位操作
案例五:文件操作
创建、读取、写入文件的汇编程序 分享文件操作所涉及的系统调用和汇编指令
案例六:汇wenku.baidu.com游戏
实现一个简单的汇编游戏,如猜数字或打砖块 结合图形和用户输入,展示汇编语言的实际应用
案例七:汇编与硬件交互
编写控制硬件设备的汇编程序,如LED显示控制 探讨汇编语言与底层硬件交互的原理和方法

汇编语言编译运行一个小程序

汇编语言编译运行一个小程序

要用汇编语言进行编译、连接并执行一个源程序,我们要首先对汇编语言的命令有所了解,下面简单介绍一下:

R命令:查看或者改变寄存其中的命令

查看寄存其中的命令(如下图)

若要修改一个寄存器的值,则可在R命令后加寄存器名来实现,如R BX,回车即可实现,在冒号后输入数据即可,若要查看修改后的程序,使用R命令即可(如下图)

D命令:查看内存中的命令,我们可以使用D命令直接查看内存中的命令,这是将列出Debug中预设地址的内容(如下图)

后程序将列出从指定单元开始的128个内存单元中的内容(如下图)

使用D命令还可以指定查看内容,如D 2000:0 9,即可查看2000~2009中的内容

U命令:查看机器码所对应的汇编指令,即进行反编译

T命令:单步执行程序中的每一条指令

下面进行简单程序的编译、连接以及运行

1.写出相应的源程序,可以用任意文本编辑器(如记事本、word)编写源程序,还可以使

用DOS下的Edit。在这里要说明的是,源程序变下完成后,我们可以将后缀名改为“.asm”

(因为我们使用的是微软的masm汇编编译器),也可以不进行修改,在编译时,只要输入它的全名即可

a.使用DOS下的Edit编辑源程序(如下)

b.使用记事本编辑源程序

2.运用“cmd”(选择“开始”菜单下的“运行”命令,在其中输入“cmd即可”)命令,

进入到C盘根目录(如下图)

3.现在开始利用masm对源程序进行编译(若文件在当前目录下,只要输入其文件名即可

(如下图3.1),若文件在其他路径下,则要输入其路径(如下图3.2))

图3.1

图3.1

汇编小程序(可供预览)

汇编小程序(可供预览)

1.数据定义伪指令,内存分配示意图

.model small

.stack 100h

.data

bVarA DB 101B,7,'D',0FH,-1

DB 2*56,'INPUT PLEASE$','?'

DB 100 DUP(0)

bVarB DB 1,2,3,4,5,6

bVarC DB '1','2','3','4','5','6'

wVarA DW 011B,-32678,65535,0FH,2,5+7ACH,'AB'

wVarB DwwVarA

wVarC DW '1','2','3','4','5','6'

dVarA DD 101B,2D89AH,5,5.0,3F800000R,20E30

dVarB DD dVarA, wVarA

.code

start:movax,@data

movds,ax

lea bx,dvarA

lea si,dvarB

;lea di,wvarC

int 3

mov ah,4ch

int 21h

end start

2.已知x=10,y=4,求z=x-y+3

.model small

.stack 200h

.data

x dw 10

y dw 4

z dw ?

.code

start:movax,@data

movds,ax

movax,x

sub ax,y

add ax,3

movz,ax

int 3

mov ah,4ch

int 21h

end start

3.输出字符串

.model small

.data

strdb 'hello,',0dh,0ah,'I',27h,'m zhang','sa',0dh,0ah,'n.','$'

精选10个汇编语言程序案例集

精选10个汇编语言程序案例集

精选10个汇编语言程序案例集

1. 汇编语言编写的计算器程序,这个程序可以接受用户输入的两个数字,然后执行加减乘除等运算,并将结果输出到屏幕上。

2. 文件复制程序,这个程序可以使用汇编语言编写,实现将一个文件的内容复制到另一个文件中的功能。

3. 简单的操作系统内核,使用汇编语言编写一个简单的操作系统内核,可以包括基本的文件管理和进程调度功能。

4. 汇编语言写的游戏,例如经典的贪吃蛇游戏或者俄罗斯方块游戏,这些游戏可以使用汇编语言编写。

5. 串口通信程序,使用汇编语言编写一个可以通过串口进行通信的程序,可以实现数据的发送和接收。

6. 硬件驱动程序,编写一个简单的汇编语言程序,可以控制硬件设备,例如控制LED灯的亮灭。

7. 汇编语言编写的加密解密算法,实现一个简单的加密解密算

法,例如凯撒密码或者简单的异或运算。

8. 简单的图形界面程序,使用汇编语言编写一个简单的图形界面程序,可以实现基本的窗口和按钮等功能。

9. 汇编语言编写的网络通信程序,实现一个简单的网络通信程序,可以进行基本的数据传输和接收。

10. 汇编语言编写的嵌入式系统程序,例如可以编写一个控制LED灯的嵌入式系统程序,可以通过按键控制LED的亮灭。

汇编语言小程序例子

汇编语言小程序例子

汇编语言小程序例子

1.编写统计AX中1、0个数的源程序。1的个数

存入CH,0的个数存入CL。

CODE SEGMENT

ASSUME CS:CODE

START: MOV CX, 0

MOV DX,17

AA1: SUB DX, 1

JZ AA3

SHL AX, 1

JNC AA2

INC CH

JMP AA1

AA2: INC CL

JMP AA1

AA3: MOV AH,4CH

INT 21H

CODE ENDS

END START

2.编写比较两个字符串STRING1和STRING2所

含字符是否完全相同的源程序,若相同则显示“MATCH”,若不相同则显示“NO MATCH”。

程序:

DATA SEGMENT

R1 DB 'MATCH',0AH,0DH

R2 DB 'NO MATCH',0AH,0DH STRING1 DB 'XXXXX'

N1 EQU $-STRING1

STRING2 DB 'YYYYY'

N2 EQU $-STRING2

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX

MOV AX,N1

CMP AX,N2

JNZ AA1

ADD AX,1

LEA SI,STRING1

LEA DI,STRING2 AA2: MOV BL,[SI] MOV BH,[DI]

INC SI

INC DI

SUB AX,1

JZ AA3

CMP BL,BH

JZ AA2

JMP AA1

AA3: LEA BX,R1

MOV CX,7

AA4: MOV DL,[BX]

java15个经典小程序

java15个经典小程序

1,编写程序,判断给定的某个年份是否是闰年。

闰年的判断规则如下:

(1)若某个年份能被4整除但不能被100整除,则是闰年。

(2)若某个年份能被400整除,则也是闰年。

import java.util.Scanner;

class Bissextile{

public static void main(String[] arge){

System.out.print("请输入年份");

int year; //定义输入的年份名字为“year”

Scanner scanner = new Scanner(System.in);

year = scanner.nextInt();

if (year<0||year>3000){

System.out.println("年份有误,程序退出!");

System.exit(0);

}

if ((year%4==0)&&(year%100!=0)||(year%400==0))

System.out.println(year+" is bissextile");

else

System.out.println(year+" is not bissextile ");

}

}

2,给定一个百分制的分数,输出相应的等级。

90分以上A级

80~89 B级

70~79 C级

60~69 D级

60分以下E级

import java.util.Scanner;

class Mark{

public static void main(String[] args){

System.out.println("请输入一个分数");

汇编小程序_5【范本模板】

汇编小程序_5【范本模板】

;=============================================================== ;文件名称: Asm3-2。asm

;功能描述:双字节无符号数乘法程序R2R3*R4R5=[R0](连续4个单元)

;===============================================================

ORG 0000H

LJMP MAIN

ORG 0100H

MAIN: MOV R0,#23H ;运算结果低位地址

MOV A,R0

PUSH ACC

CLR A

MOV R7,#4

LP1: MOV @R0, A ;运算结果存储单元清零

DEC R0

DJNZ R7, LP1

POP ACC

MOV R0,A

MOV A, R3

MOV B, R5

MUL AB ;计算R3*R5

MOV @R0,A ;计算的低8位保存

MOV A, B

DEC R0

MOV @R0,A ;保存运算的高8位

MOV A,R2

MOV B,R5

MUL AB ;计算R2*R5

ADD A,@R0 ;此次运算低8位+R3*R5运算的高8位

MOV @R0, A

DEC R0

MOV A,B

ADDC A,#00H ;R2*R5的高8位加进位位

MOV @R0,A

INC R0

MOV A, R3

MOV B,R4

MUL AB ;计算R3*R4

ADD A, @R0

MOV @R0,A

MOV A,B

DEC R0

ADDC A,@R0

MOV @R0,A

DEC R0

CLR A

ADDC A,#00H

MOV A, @R0

汇编小程序-猜字母游戏

汇编小程序-猜字母游戏

DATA SEGMENT

MSGTITLE0 DB ' *-------------------------------------*',10,13,'$' MSGTITLE1 DB ' | Now let"S paly a game,guess a word |',10,13,'$' MSGTITLE2 DB ' | The word must be A(a)-----Z(z)! |',10,13,'$' MSGTITLE3 DB ' | You have only 9 chance!! |',10,13,'$' MSGTITLE4 DB ' *_____________________________________*',10,13,'$' MSGINPUT DB 10,13,'input word:',10,13,'$'

MSGERROR DB 10,13,'wrong word!input again [A(a)--Z(z)]:',10,13,'$' MSGRESCUE DB 10,13,'Rescue game:',10,13,'$'

MSGLARGE DB 10,13,'too large!!',10,13,'$'

MSGSMALL DB 10,13,'too small!!',10,13,'$'

MSGRIGHT1 DB 10,13,'Bingo!! you only used ','$'

MSGRIGHT2 DB ' times',10,13,'$'

MSGRECORD DB 'Congruatulation!!You break the record!','$'

常见汇编小程序大全

常见汇编小程序大全

;1加到任意的数

STACK SEGMENT STACK

DB 100H DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,SS:STACK

START:

MOV CL,10

MOV AH,01H

MOV AL,0

PUSH AX

PRINT:

MOV AH,01H

INT 21H

CMP AL,0DH

JE S

SUB AL,30H

MOV DL,AL

POP AX

MUL CL

ADD AL,DL

PUSH AX

JMP PRINT

S:

MOV DL,0AH

MOV AH,02H

INT 21H

POP AX ;输出回车换行

MOV CL,AL ;加法器,并输出结果AND CX,00FFH

MOV AX,0

MOV BX,1

SSS: ADD AX,BX

INC BX

LOOP SSS

MOV CX,0

XXX: MOV DX,0

MOV BX,10

DIV BX

INC CX

PUSH DX

CMP AX,0

JA XXX

MOV AH,02H

SSSS:

POP DX

ADD DL,30H

INT 21H

LOOP SSSS

MOV AH,4CH

INT 21H

CODE ENDS

END START

;2 p进制bx(入口)转换

STACK SEGMENT STACK

DB 100H DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,SS:STACK

START:

MOV CL,10

MOV AH,01H

MOV AL,0

PUSH AX

PRINT:

MOV AH,01H

INT 21H

CMP AL,0DH

JE S

汇编语言小程序例子

汇编语言小程序例子

汇编语言小程序例子

作为一种低级语言,汇编语言在计算机编程中起着重要的作用。它能够直接操作计算机的硬件资源,具有高效性和灵活性。下面我将介绍一些汇编语言的小程序例子,让我们来了解一下。

1. 计算两个数的和

```assembly

section .data

num1 db 10

num2 db 20

result db 0

section .text

global _start

_start:

mov al, [num1] ; 将num1的值移动到寄存器AL中

add al, [num2] ; 将num2的值加到AL寄存器中

mov [result], al ; 将AL寄存器中的结果保存到result变量中

mov eax, 1 ; 将1存入寄存器EAX,表示要打印到标准输出 mov ebx, 1 ; 将1存入寄存器EBX,表示标准输出文件描述符

mov ecx, result ; 将result的地址存入寄存器ECX,表示要打印的内容

mov edx, 1 ; 将1存入寄存器EDX,表示要打印的内容长度 int 0x80 ; 调用系统调用,输出结果到屏幕

mov eax, 1 ; 将1存入寄存器EAX,表示退出程序

xor ebx, ebx ; 清空寄存器EBX

int 0x80 ; 调用系统调用,退出程序

```

以上是一个简单的汇编语言程序,用于计算两个数的和。首先,我们在`.data`段定义了三个变量:`num1`、`num2`和`result`。然后,在`.text`段通过指令将变量的值加载到寄存器中,并进行加法运算。接下来,使用系统调用输出结果到屏幕,并通过系统调用退出程序。

VB编写各种趣味小程序(附代码)

VB编写各种趣味小程序(附代码)

VB编写各种趣味小程序(附代码)

一、鸟巢绘制

二、加密

三、解密

四、蝴蝶飞舞

五、文本编辑

六、统计

七、小球跳动

八、计算器(彩票摇奖)

九、学生信息录入

十、矩阵转置

十一、带有进度条的倒计时程序

十二、加减乘除随机数题

十三、计算器

十四、抽奖

一、鸟巢绘制

Private Sub Form_Click()

Cls

Dim r, xi, yi, xj, yj, x0, y0, aif As Single

r = Form10.ScaleHeight / 2

x0 = Form10.ScaleWidth / 2

y0 = Form10.ScaleHeight / 2

n = 16

aif = 3.14159 * 2 / n

For i = 1 To n

xi = r * Cos(i * aif) + x0

yi = r * Sin(i * aif) + y0

For j = i To n

xj = r * Cos(j * aif) + x0

yj = r * Sin(j * aif) + y0

Line (xi, yi)-(xj, yj), QBColor(i - 1)

PSet (xi, yi)

Print i - 1

Next j

Next i

End Sub

Private Sub Form_Load()

Print "要求:";

Print "1.将圆周等分成16份;"

Print "2.每个等分点要标记成0-16的数字;" Print "3.按样本图的图案画图。"

End Sub

附图:

二、加密

Function code(ByVal s$, ByVal key%) Dim c As String * 1, iAsc%

汇编语言_24个汇编实例小程序

汇编语言_24个汇编实例小程序

24个汇编小程序

题目列表:

逆序输出字符串“BASED ADDRESSING”

从键盘上输入两个数,分别放到x,y单元,求出它们的和

是编写一段程序,要求在长度为10h的数组中,找出大于42h的无符号数的个数并存入地址

为up开始区域,找出小于42h的无符号数的个数并存入地址为down的开始区域

键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出

从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符

把一个包含20个数据的数组M分成两组:正整数组P和负整数组N,分别把这两个数组中的数据的个数显示出来

求出首地址为data的100个字数组中的最小偶数,并把它放在ax中

输入两船字符串string1和string2,并比较两个字符串是否相等,相等就显示“match”,否则显示“no match”

从键盘接收一个四位的十六进制数,并在终端显示与它等值的二进制数

从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果

有一个首地址为mem的100个字的数组,试编程序删除数组中所有为零的项,并将后续项

向前压缩,最后将数组的剩余部分补上零

从键盘上输入一串字符(用回车键结束,使用10号功能调用)放在string中,是编制一个程序测试字符串中是否存在数字。如有,则把cl的第五位置1,否则将该位置置0

在首地址为data的字数组中,存放了100h的16位字数据,试编写一个程序,求出平均值

放在ax寄存器中,并求出数组中有多少个数小于此平均值,将结果放在bx寄存器中(f分别考虑有符号数、无符号数情况)

单片机汇编小程序

单片机汇编小程序

P1口接8个灯,点亮P1.0

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN:CLR P1.0 /* MOV A,#0FE MOV P1,A*/

END

/* Eg2:点亮全部小灯

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN:CLR A

MOV P1,A

END */

/*EG3:点亮小灯,再熄灭小灯

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN: CLR A MOV A,#00H

MOV P1,A MOV P1,A

CPL A MOV A,#0FFH

MOV P1,A MOV P1,A

END

Eg4:闪烁小灯(点亮小灯,再熄灭小灯)10次

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN: MOV R7,#10

LOOP:CLR A MOV A,#00H

MOV P1,A MOV P1,A

CPL A MOV A,#0FFH

MOV P1,A MOV P1,A

DJNZ R7,LOOP

END */

/*EG3:点亮小灯,再熄灭小灯

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN: CLR A MOV A,#00H

MOV P1,A MOV P1,A

CPL A MOV A,#0FFH

MOV P1,A MOV P1,A

END

Eg4:闪烁小灯(点亮小灯,再熄灭小灯)10次

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN: MOV R7,#10

LOOP:CLR A MOV A,#00H

MOV P1,A MOV P1,A

CPL A MOV A,#0FFH

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编经典小程序(总5页) -CAL-FENGHAI.-(YICAI)-Company One1

-CAL-本页仅作为文档封面,使用请直接删除

实验一:判断一个数X的正,负数,还是零。(假设是正数,输出+,是负数,输出-,是零,输出This is a zore !)

DATA SEGMENT

X DB 10

CR EQU 0DH

LF EQU 0AH

W DB 'This is a zore!',CR,LF,'$'

ZHENG DB '+',CR,LF,'$'

FU DB '-',CR,LF,'$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV AL,X

AND AL,AL

JZ L1

SHL AL,1

JC L3

JMP L2

L1: MOV DX,OFFSET W

MOV AH,9

INT 21H

JMP L4

L2: MOV DX,OFFSET ZHENG

MOV AH,9

INT 21H

JMP L4

L3: MOV DX,OFFSET FU

MOV AH,9

INT 21H

JMP L4

L4: MOV AH,4CH

INT 21H

CODE ENDS

END START

实验二:求十个数中的最小数,并以十进制输出。(若要求最大的,只要把JC 改为JNC 即可)(仅局限于0---16间的数比较,因为ADD AL,30H只是针对一位的十六进制转换十进制的算法)

DATA SEGMENT

XDAT DB 0AH,1FH,02H,03H,04H,05H,06H,07H,08H,09H

MIN DB

CR EQU 0DH

LF EQU 0AH

W DB ' is min',CR,LF,'$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV CX,9

MOV SI,OFFSET XDAT

MOV AL,[SI]

L2: CMP AL,[SI+1]

JC L1

MOV AL,[SI+1]

L1: INC SI

LOOP L2

ADD AL,30H

MOV DL,AL

MOV AH,2

INT 21H

MOV DX,OFFSET W

MOV AH,9

INT 21H

CODE ENDS

END START

实验三:设有3个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将它们从大到小从新排列的程序。

DATA SEGMENT

BUF DB 87,234,123

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET BUF

MOV AL,[SI] ;把3个数取到寄存器中

MOV BL,[SI+1]

MOV CL,[SI+2]

CMP AL,BL ;排序,将最大数送AL寄存器

JAE NEXT1

XCHG AL,BL

NEXT1:CMP AL,CL

JAE NEXT2

XCHG AL,CL

NEXT2:CMP BL,CL ;将最小输送CL寄存器

JAE NEXT3

XCHG BL,CL

NEXT3:MOV [SI],AL ;从大到小依次存回缓冲区,AL,BL,CL

MOV [SI+1],BL

MOV [SI+2],CL

MOV AH,4CH

INT 21H

CODE ENDS

END START

实验三(2):设某一数组的长度为N,个元素均为字数据,试编制一个程序使该数组中的数据按照从小到大的次序排列。(要从大到小排序,只需把JBE改为JAE即可)

ADATA SEGMENT

N EQU 10

DATA DW 87,54,78,45,35,23,04H,12H,03H,21H

ADATA ENDS

ACODE SEGMENT

ASSUME CS:ACODE,DS:ADATA

START:MOV AX,ADATA

MOV DS,AX

MOV DS,AX

MOV BX,0

MOV CX,N

DEC CX

LOP1: MOV DX,CX

LOP2: MOV AX,DATA[BX]

CMP AX,DATA[BX+2]

JBE CONTI

XCHG AX,DATA[BX+2]

MOV DATA[BX],AX

CONTI: ADD BX,2

LOOP LOP2

MOV CX,DX

MOV BX,0

LOOP LOP1

MOV AH,4CH

INT 21H

ACODE ENDS

END START

实验四:求十个数中的最小数,并以十六进制输出。(若要求最大的,只需把JC 改为JNC 即可)

相关文档
最新文档