汇编经典小程序
基础的汇编语言小程序
基础的汇编语言小程序
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例
当然可以帮你制作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个汇编语言程序案例集
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个经典小程序
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【范本模板】
;=============================================================== ;文件名称: 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编写各种趣味小程序(附代码)
一、鸟巢绘制
二、加密
三、解密
四、蝴蝶飞舞
五、文本编辑
六、统计
七、小球跳动
八、计算器(彩票摇奖)
九、学生信息录入
十、矩阵转置
十一、带有进度条的倒计时程序
十二、加减乘除随机数题
十三、计算器
十四、抽奖
一、鸟巢绘制
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个汇编小程序
题目列表:
逆序输出字符串“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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 即可)