Подскажите куда копать - Assembler
Формулировка задачи:
Здравствуйте помогите решить задачу или подскажите решить. суть задачи вывести из массива часто встречаемый элемент. если напишите код буду благодарен))
Решение задачи: «Подскажите куда копать»
textual
Листинг программы
; .8086 .MODEL TINY ; Tab EQU 9 CR EQU 0Dh LF EQU 0Ah Space EQU 20h ; .CODE ORG 100h START: LEA DX, sdInfo CALL DISP_SD STR_LOOP: ; Input string LEA DX, kbBuf MOV SI, DX INC SI MOV AH, 0Ah INT 21h CALL DISP_CRLF XOR CH, CH MOV CL, [SI] JCXZ EXIT INC SI MOV BX, CX ; Save char numb. ; Sort array MOV DI, SI SORT_LOOP: MOV SI, DI ADD SI, CX MOV AL, [DI] CMP_LOOP: DEC SI CMP [SI], AL JNC NEXT_CH XCHG [SI], AL NEXT_CH: CMP SI, DI JNZ CMP_LOOP STOSB LOOP SORT_LOOP ; Display sorted array LEA DI, chBuf MOV DX, DI MOV [DI+BX+1], Word Ptr ("$"*256 + LF) ; String length without CR CALL DISP_SD ; Scan for most freq. chars MOV CX, BX XOR DH, DH ; Most frequent count MOV DL, [DI] ; Most freq. char SCAN_LOOP: INC CX MOV AL, [DI] MOV SI, DI REPE SCASB DEC DI MOV BX, DI SUB BX, SI CMP DH, BL JNC NEXT_CHB MOV DH, BL MOV DL, AL NEXT_CHB: TEST CX, CX JNZ SCAN_LOOP ; Result LEA AX, STR_LOOP PUSH AX MOV AL, DL LEA DX, sdSpace CMP AL, Space JE DISP_SD LEA DX, sdTab CMP AL, Tab JE DISP_SD MOV DL, AL MOV AH, 2 INT 21h DISP_CRLF: LEA DX, sdCrLf DISP_SD: MOV AH, 9 INT 21h EXIT: RET ; .DATA sdInfo DB "Displays most frequent char; enter empty string to exit" sdCrLf DB CR, LF, "$" sdSpace DB "[Space]", CR, LF, "$" sdTab DB "[Tab]", CR, LF, "$" kbBuf DB 80 chBuf EQU kbBuf + 2 ; END START ;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д