搜档网
当前位置:搜档网 › 汇编经典小程序

汇编经典小程序

汇编经典小程序
汇编经典小程序

实验一:判断一个数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间的数比较,因为ADDAL,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,'$'

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

实验三(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 即可)

DATA SEGMENT

XDAT DB 0AH,1FH,0FH,0FH,0EH,0BH,0CH,0DH,0EH,0CH

TAB DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H MIN DB ? CR EQU 0DH

LF EQU 0AH

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

DATA ENDS

SSEG SEGMENT STACK

DW 100 DUP(?)

SSEG 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

CALL DISPP

MOV DX,OFFSET W

MOV AH,9

INT 21H

MOV AH,4CH

INT 21H

DISPP PROC NEAR

PUSH DX

PUSH CX

MOV DL,AL

MOV CL,4

ROL DL,CL

AND DL,0FH

CALL DISP1

MOV DL,AL

AND DL,0FH

CALL DISP1

POP CX

POP DX

RET

DISPP ENDP

DISP1 PROC NEAR

PUSH AX

PUSH BX

PUSH CX

PUSH DX

MOV AL,DL

MOV BX,OFFSET TAB

MOV AH,0

ADD BX,AX

MOV DL,[BX]

MOV AH,2

INT 21H

POP DX

POP CX

POP BX

POP AX RET

DISP1 ENDP CODE ENDS

END START

欢迎您的下载,

资料仅供参考!

致力为企业和个人提供合同协议,策划案计划书,学习资料等等

打造全网一站式需求

相关主题