所在位置:主页 > 程序语言 > 试按汇编语言子程序的编程方法比较两个字节变量的大小?

试按汇编语言子程序的编程方法比较两个字节变量的大小?

发布时间:2023-11-13 08:56来源:www.sf1369.com作者:宇宇

assume cs:code,ds:data

data segment

db 11h,10h ;两个内存相邻的字节

data ends

code segment

start:

mov ax,data

mov ds,ax

mov ah,ds:[0] ;将和源11h放入

mov al,ds:[1] ;将10h放入

mov cx,1

;设置死循环不停比较,也可自己设置cx值改变循环次数

s:

inc cx

call s0 ;调用子程序s0

loop s

mov ax, 4c00h

int 21h

;子程序

s0:

cmp ah,al ;比较低地址和高地址斗旅的数唤销态

je s1 ;等于就返回

jb s1 ; 小于就返回,不必交换

;不是上面两个结果就是大于,就交换高低地址

mov ds:[0],al

mov ds:[1],ah

s1:

ret ;返回继续循环

code ends

end start

CODE SEGMENT

ASSUME CS:CODE

BUF DB 99,87,56,09,78,32,87,43,123,234

START: PUSH CS

POP DS

PUSH CS

POP ES

LEA SI,BUF

INC SI

INC SI

CALL SWAP

MOV AL,[SI]

; CBW

CALL DSPAL

MOV AH,4CH

INT 21H

;==================================

SWAP PROC NEAR

MOV AL,[SI]

CMP AL,[SI+1]

JBE @1

XCHG AL,[SI+1]

MOV [SI],AL

@1:

RET

SWAP ENDP

;===============================

DSPAL PROC NEAR

PUSH AX

PUSH BX

PUSH CX

PUSH DX

PUSHF

XOR AH,AH

XOR CX,CX

MOV BL,10

@DSPAL1:

DIV BL

INC CX

MOV DL,AH

XOR AH,AH

OR DX,30H

PUSH DX

CMP AL,0

JNE @DSPAL1

MOV AH,2

@DISPAL2:

POP DX

INT 21H

LOOP @DISPAL2

MOV DL,32

INT 21H

POPF

POP DX

POP CX

POP BX

POP AX

RET

DSPAL ENDP

;==================================

CODE ENDS

END START