Значение переменной не выводится на экран - Assembler

Узнай цену своей работы

Формулировка задачи:

Мне нужно вывести на экран максимальное абсолютное значение в массиве. Но на экран значение (LARG) почему-то не выводится, вместо него мусор... в чем причина? записывать надо именно в регистр CX
DATA SEGMENT
     ARR DB 1,4,2,3,9,8,6,7,5,10
     LEN DW $-ARR
     LARG DB 0
DATA ENDS
 
CODE SEGMENT 
        ASSUME DS:DATA, CS:CODE
START:
        MOV AX,DATA
        MOV DS,AX
           
        LEA SI,ARR
       
        MOV AL,ARR[SI]
        MOV LARG,AL
               
        MOV CX,LEN
REPEAT:
        MOV AL,ARR[SI]
        CMP LARG,AL
        JG NOCHANGE
       
        MOV LARG,AL
NOCHANGE:
        INC SI
        LOOP REPEAT
 
        MOV CH, LARG
        MOV AH,09h
        INT 21h
 
        MOV AH,4CH
        INT 21H     
 
CODE ENDS
 
stk segment stack
    db 256 dup(0)
stk ends
END START

Решение задачи: «Значение переменной не выводится на экран»

textual
Листинг программы
;masm
.model small
.stack
.DATA 
     ARR DB 1,4,2,3,9,8,6,7,5,10
     LEN DW $-ARR
     LARG DB 0
 
.CODE 
;        ASSUME DS:DATA, CS:CODE
START:
        MOV AX,@DATA
        MOV DS,AX
           
        LEA SI,ARR
       
    lodsb;        MOV AL,ARR[SI]
        MOV LARG,AL
               
        MOV CX,LEN
_REPEAT:
    lodsb;        MOV AL,ARR[SI]
        CMP LARG,AL
        JG NOCHANGE
       
        MOV LARG,AL
NOCHANGE:
        INC SI
        LOOP _REPEAT
; для чисел от 0 до 99 
        MOV al, LARG
    db  0D4h, 0Ah;        aam   10
        or  ax, '00'
;        MOV AH,09h
    xchg    ah, al
        INT 29h
    xchg    ah, al
        INT 29h
 
        MOV AH,4CH
        INT 21H     
 
END START

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы