S0 SEGMENT STACK; DW 20 DUP(?); TOP LABEL WORD; S0 ENDS; S1 SEGMENT; TIP DB "Please enter ten numbers separated by spaces:", 0DH, 0AH, 24H; ARY DW 20 DUP(0); CRLF DB 0DH, 0AH, 24H; N DW 0; S1 ENDS; S2 SEGMENT; ASSUME SS:S0, DS:S1, CS:S2, ES:S1; P PROC FAR; MOV AX, S0; MOV SS, AX; LEA SP, TOP; MOV AX, S1; MOV DS, AX; MOV AX, S1; MOV ES, AX; LEA DX, TIP; MOV AH, 9; INT 21H; LEA SI, ARY; XOR DX, DX; MOV BL, 10; MOV CX, 10; INPUT: MOV AH, 1; INT 21H; CMP AL, 20H; JE SAVE; MOV DL, AL; MOV AX, [SI]; MUL BL; SUB DL, 30H; ADD AL, DL; MOV [SI], AX; JMP INPUT; SAVE:; ADD SI, 2; LOOP INPUT; LEA SI, ARY; MOV DI, SI; ADD DI, 2 ; MOV BP, 9 ; GO: MOV CX, BP ; MOV BX, [SI] ;第一个数; CMPA: CMP BX, [DI] ; JBE CON ; MOV BX, [DI] ; MOV AX, DI ; CON: ADD DI, 2; LOOP CMPA; CMP AX, 0 ; JE NO ; CHANGE: MOV DX, [SI] ; PUSH DX; MOV [SI], BX; POP DX; MOV DI, AX; MOV [DI], DX; NO: ADD SI, 2; MOV DI, SI; ADD DI, 2; CALL PRINT; DEC BP ; XOR AX, AX ; CMP BP, 1; JNE GO; EXIT: MOV AH, 4CH; INT 21H; P ENDP; PRINT PROC NEAR; PUSH SI; PUSH CX; PUSH AX; PUSH DX; LEA DX, CRLF; MOV AH, 9; INT 21H; LEA SI, ARY; MOV CX, 10; L1: MOV AX, [SI]; MOV N, AX; CALL OUTPUT; ADD SI, 2; MOV DX, 20H; MOV AH, 2; INT 21H; LOOP L1; POP DX; POP AX; POP CX; POP SI; RET; PRINT ENDP; OUTPUT PROC NEAR; PUSH AX; PUSH BX; PUSH CX; PUSH DX; XOR CX, CX; MOV AX, N; MOV BX, 10; L2: XOR DX, DX; DIV BX; PUSH DX; INC CX; CMP AX, 0; JNE L2; L3: POP DX; ADD DX, 30H; MOV AH, 2; INT 21H; LOOP L3; POP DX; POP CX; POP BX; POP AX; RET; OUTPUT ENDP; S2 ENDS; END P;一共123行,每行都是干什么的,以;结尾为一行
时间: 2023-06-24 15:04:50 浏览: 179
STACK1_SEGMENT_STACK.rar_STACK1 SEGMENT_stack segment stack
5星 · 资源好评率100%
这是一段8086汇编语言的程序,主要是用于输入10个数字并进行排序。程序分为三个段:S0、S1和S2。
S0段定义了一个栈,并初始化了栈顶TOP。S1段定义了一些数据,包括提示信息、数字数组和换行符。S2段是主程序段,其中包含了一个PROC过程P和两个NEAR过程PRINT和OUTPUT。
在P过程中,程序首先将栈和数据段的地址赋给SS和DS寄存器,然后输出提示信息。随后,程序通过循环读取用户输入的数字并存储到数组中。接下来,程序进行排序并输出结果。最后,程序通过INT 21H中断退出。
在PRINT过程中,程序首先保存寄存器的值,输出换行符和数组中的每一个数字,最后恢复寄存器的值并返回。
在OUTPUT过程中,程序将输入的数字逆序输出。
程序中用到了一些汇编语言的指令和操作,比如MOV、ADD、SUB、CMP、JMP、LOOP、XOR、INC、MUL、DIV等等。同时,程序还用到了栈的数据结构和算法。
阅读全文