X86汇编学习笔记P1--基础程序设计

这篇博客介绍了X86汇编语言的基础程序设计,通过实现冒泡排序算法对DATA区内存进行排序,并以16进制展示排序结果,涉及到32位乘法操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一个程序设计实现对DATA区中的内存进行大小排序,并按照16进制将结果输出

此程序则主要实现一个冒泡排序算法:

STACK			SEGMENT	PARA	STACK
STACK_AREA		DW		100H	DUP(0)
STACK_BTM		EQU		$	-	STACK_AREA
STACK 			ENDS

DATA			SEGMENT	PARA
TABLE_LEN		DW		20
TABLE 			DW		200,300,400,10,20,1506H,1015H,0,1,8
			DW		41H,40,43H,50,60,0FFFFH,2,3,19H,0AH
RESULT			DB		5 	DUP(0),20H,'$'				;20H为空格
NEWLINE			DB		0DH,0AH,'$'

DATA			ENDS

CODE			SEGMENT	PARA
			ASSUME	CS:CODE,DS:DATA,SS:STACK

MAIN			PROC	FAR
				MOV		AX,STACK
				MOV		SS,AX
				MOV		AX,STACK_BTM
				MOV		SP,AX
				MOV		AX,DATA
				MOV		DS,AX

SORT:
				MOV		CX,TABLE_LEN
				DEC		CX
SORT_LP1:
				MOV		BX,1
				MOV		SI,OFFSET	TABLE
				PUSH	CX

SORT_LP2:
				MOV		AX,[SI]
				CMP		AX,[SI + 2]
				JBE		SORT_CONTINUE
				XCHG	AX,[SI + 2]
				MOV		[SI],AX
				MOV		BX,0
SORT_CONTINUE:
				ADD		SI,2
				LOOP	SORT_LP2

				POP		CX
				DEC		CX
				CMP		BX,1
				JZ		PRINT
				JMP		SHORT	SORT_LP1

PRINT:				
				CALL	DISP_TABLE

EXIT:			        MOV		AX,4C00H
				INT		21H


MAIN			ENDP

DISP_TABLE		PROC
				MOV			SI,OFFSET	TABLE
				MOV			CX,TABLE_LEN
				CLD
DISP_TABLE_LP1:
				LODSW
				CALL		DISP_HEX
				LOOP		DISP_TABLE_LP1
				RET
DISP_TABLE		ENDP

DISP_HEX		PROC			;显示16进制形式输出AX
				PUSH		CX
				MOV			BX,AX
				MOV			CX,4
DISP_HEX_LP1:
				PUSH		CX
				MOV			CL,4
				ROL			BX,CL
				MOV			AL,BL
				AND			AL,0FH
				ADD 		AL,30H
				CMP			AL,39H
				JBE			DISP_HEX_DIS
				ADD			AL,'A' - '9' - 1

DISP_HEX_DIS:	                MOV			DL,AL
				MOV			AH,2
				INT			21H
				POP			CX
				LOOP		DISP_HEX_LP1

				MOV			DL,'H'
				MOV			AH,2
				INT			21H

				LEA 		DX,NEWLINE
				MOV			AH,9
				INT			21H
				POP			CX
				RET
DISP_HEX		ENDP

CODE			ENDS
				END 	MAIN

NEXT:32位乘法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值