当前位置:网站首页>Njupt South Post collection_ Experiment 1

Njupt South Post collection_ Experiment 1

2022-06-11 00:09:00 Retreat drum ten level performer

Assembly language grammar practice and code conversion
The experimental requirements : Write a program , Count the number of negative numbers , And find the maximum number and the minimum number .
Suppose the data segment has 8 Number :
NUM DB -19,+28,37,-46,+55,61,-74,+255
Design a program to complete :
(1)( Must do ) Count and display the number of negative numbers .
(2)( Choose to do ) Find the maximum and minimum number of truth values , And displayed on the screen in binary form . Display format is :
MAX=XXXXXXXXB; MIN=XXXXXXXXB.

DATAS SEGMENT
NUM DW -19,+28,37,-46,+55,61,-74,+255
MAX DW 0  ; Storage maximum 
MIN DW 0  ; Storage minimum 
STR1 DB 'MAX=$'
STR2 DB 'B;MIN=$'
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV BX,OFFSET NUM
    MOV CX,8
    MOV DL,0	;DL Keep statistics of the number of people 
LAST:
	CMP WORD PTR [BX],0
	JGE NEXT	; Greater than or equal to  0  go to NEXT Instructions 
	INC DL		;DL+1->DL
NEXT:
	INC BX		;NUM is WORD
	INC BX
	LOOP LAST
	ADD DL,30H	;DL=0-9ASCII code 
	MOV AH,2
	INT 21H
	
	MOV DL,0DH
    MOV AH,2
	INT 21H
	MOV DL,0AH
    MOV AH,2
	INT 21H		; Line break 
	
	MOV DI,OFFSET NUM
    MOV AX,[DI]
    MOV MIN,AX
    MOV MAX,AX
    MOV CX,7			  ; Set the number of cycles 
AGAIN:
	INC DI  
	INC DI                ; The font data pointer needs to move two units 
	MOV AX,[DI]
	CMP AX,MAX
	JG BRANCH1           ; If AX>MAX, Then the jump label name is BRANCH1 perform 
	JMP BRANCH2			 ; otherwise , Jump BRANCHE2, Don't execute BRANCHE1
BRANCH1:
	MOV MAX,AX	         ; Save the current maximum value into MAX
BRANCH2:
	CMP AX,MIN
	JLE BRANCH3          
	JMP LOOP1	
BRANCH3:
	MOV MIN,AX	       ; Save the current minimum value into MIN, Principle and MAX Same as 
LOOP1:	
	LOOP AGAIN	        ;CX Greater than 0 Just keep cycling 
	
	MOV AH,9H
	LEA DX,STR1
	INT 21H
    
    MOV AX,MAX
    CALL PRINT          ; Call subroutine 
    
	MOV AH,9H
	LEA DX,STR2
	INT 21H
	
    MOV AX,MIN
    CALL PRINT
    
    MOV AH,2H
	MOV DL,'B'
	INT 21H
    
    MOV AH,4CH
    INT 21H 
;-------------------------------------------------

PRINT PROC
	PUSH BX; Data on the stack , Keep the value 
	PUSH DX	
	MOV DH,0; Used to count , in total 16 Time 
	
BINARYAGAIN:	
	CMP DH,16
	JE BINARYOVER; End of output , End of function reached 
	ROL AX,1; Move a bit 
	MOV BX,AX
	AND AX,0001H
	MOV DL,AL
	ADD DL,48
	MOV AH,2
	INT 21H
	INC DH
	MOV AX,BX
	JMP BINARYAGAIN		
	
BINARYOVER:
	POP DX
	POP BX
	RET
PRINT ENDP

CODES ENDS
    END START


原网站

版权声明
本文为[Retreat drum ten level performer]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/03/202203020629040251.html