栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

汇编语言之8086,基本框架以及函数集合(一)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

汇编语言之8086,基本框架以及函数集合(一)

目录

一、基本框架

1.1 具有换行函数

二、函数

2.1 输出单个正数(ax的范围)(不支持负数)

2.2 输入单个正数 【0-99】(不支持负数)

2.3 降序冒泡排序,只处理(db)数据

2.4 输出数组数据(空格分隔)

2.5 换行函数(masm)

2.6 输出字符串

2.7 换行函数(emu8086) 


一、基本框架

1.1 具有换行函数
assume cs:code,ds:data	
data segment		;数段段(存放自定义数据的地方)	
	
data ends		
				
code segment		;代码段(自定义代码的地方)
start:							
	mov ax,data					
	mov ds,ax		
	;------------------------------------------------- 核心代码编辑开始



	;------------------------------------------------- 核心代码编辑结束

    call nextLine
	jmp finish	

;----------------------------------------------------- 函数存放开始

nextLine proc        ;无需在外部环境设置参数,这个函数用来换行
	push ax
	push dx
	mov dl,10	
	mov ah,2	
	int 21h	
	pop dx
	pop ax
	ret			
nextLine endp
;----------------------------------------------------- 函数存放结束

finish:			
	mov ax,4c00h	
	int 21h	
code ends		
	end start

二、函数

2.1 输出单个正数(ax的范围)(不支持负数)
printNumber proc
    ;函数作用:输出ax的值到屏幕上
    ;函数参数:在call printNumber之前,设置好ax的值

	push ax
	push bx
	push cx
	push dx
	push di
	push si

	mov dx,0
	mov cx,0
	mov bx,10
P0:
	div bx
	add dx,'0'
	push dx
	mov dx,0
	inc cx
	cmp ax,0
	je P1		
	jmp P0
P1:
P2:
	pop dx
	mov ah,2
	int 21h
	loop P2
	
	pop si
	pop di
	pop dx
	pop cx
	pop bx
	pop ax
	
	ret
printNumber endp

2.2 输入单个正数 【0-99】(不支持负数)
inputNumber proc
    ;函数作用:输入 NumberLength 个范围为[0,99]的正数,将其保存到 NumberStore 中。
    ;例如 :04,99,25

    ;函数参数设置:在数据段中定义如下两条语句(默认为10个元素)
                         NumberStore db 10 dup(0)
                         NumberLength dw 10
	
	push ax
	push bx
	push cx
	push dx
	push di
	push si
	
	lea bx,NumberStore
	mov si,0
	mov cx,NumberLength
I0:
	mov ah,1
	int 21h
	sub al,'0'
	mov ah,0
	mov dl,10
	mul dl
	mov [bx+si],al
	mov ah,1
	int 21h
	sub al,'0'
	add [bx+si],al
	inc si
	mov dl,' '
	mov ah,2
	int 21h
	loop I0
	
	pop si
	pop di
	pop dx
	pop cx
	pop bx
	pop ax
	
	ret
inputNumber endp

2.3 降序冒泡排序,只处理(db)数据
sortByDescending proc
    ;函数作用:降序的冒泡排序

    ;函数参数设置:在数据段中定义如下两条语句(默认为10个元素)
                         NumberStore db 10 dup(0)
                         NumberLength dw 10
    ;函数调用后,NumberStore 的数据有序且降序。
    ;NumberStore 的单个数据范围为 db
	
	push ax
	push bx
	push cx
	push dx
	push di
	push si
	
	mov di,NumberLength
	dec di
LP1:
	mov cx,di
	mov bx,0
LP2:
	mov al,NumberStore[bx]
	cmp al,NumberStore[bx+1]
    jae CONT
    xchg al,NumberStore[bx+1]
	mov NumberStore[bx],al
CONT:
	inc bx
	loop LP2  
    dec di
    jnz LP1
	
	pop si
	pop di
	pop dx
	pop cx
	pop bx
	pop ax
	ret
sortByDescending endp

2.4 输出数组数据(空格分隔)
printArray proc
	;函数作用:输出数组(即输出连续的数据)到屏幕上

    ;函数参数设置:在数据段中定义如下两条语句(默认为10个元素)
                         NumberStore db 10 dup(0)
                         NumberLength dw 10

    ;NumberStore 的单个数据范围为 db
	
	push ax
	push bx
	push cx
	push dx
	push di
	push si
	
    ;输出 db 数组
	mov cx,NumberLength		
	mov si,0
A0:
	xor ax,ax
	mov al,NumberStore[si]
	call printNumber
	mov dl,' '		
	mov ah,2	
	int 21h
	inc si
	loop A0	
	

    ;输出 dw 数组
	;mov cx,NumberLength		
	;mov si,0
;A0:
	;mov ax,NumberStore[si]
	;call printNumber
	;mov dl,' '		
	;mov ah,2	
	;int 21h
	;add si,2
	;loop A0	

	pop si
	pop di
	pop dx
	pop cx
	pop bx
	pop ax
	ret
printArray endp

2.5 换行函数(masm)
nextLine proc
                ;换行,直接调用就行
	push ax
	push dx
	mov dl,10	
	mov ah,2	
	int 21h	
	pop dx
	pop ax
	ret			
nextLine endp

2.6 输出字符串
outptString proc
    
    ;在call outptString之前,设置好dx的值。
    ;比如:
    ;在数据段中定义    MESSAGE db "123$"
    ;在代码段中定义    
    ;                  lea dx,MESSAGE
    ;                  call outptString
    ;一定要加$,不然会出现一堆乱码,原因是$标志着字符串结束。
    ;如果没有末尾没有加$,程序会一直输出字符直到遇到$结束。
    ;类比一下C语言。输出没有加/0的字符数组,程序有可能会出现乱码。

	push ax		
	mov ah,9	
	int 21h
	pop ax		
	ret			
outptString endp	

2.7 换行函数(emu8086) 
nextLine proc        ;无需在外部环境设置参数,这个函数用来换行
	push ax
	push dx
	MOV DL,0DH
    MOV AH,2
    INT 21H
    MOV DL,0AH
    MOV AH,2
    INT 21H
	pop dx
	pop ax
	ret			
nextLine endp

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/926162.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号