4.asm

来自「这些是我们在学校里做汇编实验时做的。实验列表如下。里面有源代码。 1. 实」· 汇编 代码 · 共 88 行

ASM
88
字号
.MODEL small
.DATA
	x db 2,5,3,8,9,0,2,7,1,3
	result1 db "the max is:","$"
	result2 db "the min is:","$"
.CODE

MAIN PROC FAR
  
	mov ax,@DATA
 	mov ds,ax

        MOV CX,9   ;设置比较次数cx设为10-1
	MOV SI,0    ;设置指针初值
	MOV BH,0      ;清BH值
 	MOV BL,0
 	MOV BH,x[SI]   ;把指针所指的数赋给BH
 	MOV BL,x[SI]  ;结果是 mov bl,[si+0008] 

NEXT:  CMP CX,0      ;CX中的值与0比较
 	JE EXIT       ;相等就跳到EXIT标签去
  
        INC SI        ;调整指针 si=0001
 	DEC CX       ;CX中值减1 

 	mov ah,x[si]    ;将二进制转化为ASCII码并输出
 	add ah,30h
 	mov dl,ah
 	mov ah,2
 	int 21h

 	MOV AL,x[SI]   ;把下一个值临时存到AL中
 	CMP AL,BH     ;比较AL与BH中的值 cmp 05,02
 	JG MAX        ;大于就跳到MAX去
 	CMP AL,BL     ;比较AL与BL中的值
 	JL MIN        ;小于就跳到MIN去
 	JMP NEXT

MAX: 	MOV BH,AL    ;设置AL中的值到BH中成为最大值
 	JMP NEXT

	MIN: MOV BL,AL    ;设置AL中的值到BL中成为最小值
	JMP NEXT

	EXIT: 

 	CALL CRLF   ;调用CRLF子程序来输出回车和换行

 	lea dx,result1    ;输出最大数
 	mov ah,9
 	int 21h

 	add bh,30h   
 	mov dl,bh
 	mov ah,2
 	int 21h

 	CALL CRLF

 	lea dx,result2    ;输出最小数
 	mov ah,9
 	int 21h

 	add bl,30h
 	mov dl,bl
 	mov ah,2
 	int 21h

 	MOV ah,4CH 
 	INT 21H
MAIN ENDP      ;结束主程序

CRLF PROC NEAR       ;子程序:用来打印回车和换行

 	mov dl,0dh  ;回车
 	mov ah,2
 	int 21h

 	mov dl,0ah   ;换行
 	mov ah,2
 	int 21h 
 	RET   ;返回
CRLF ENDP

END MAIN

 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?