汇编经典小程序

  • 格式:doc
  • 大小:34.50 KB
  • 文档页数:5

下载文档原格式

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

实验一:判断一个数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

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寄存器

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 即可)

DATA SEGMENT