2016-05-06 2 views
-1

Я пытаюсь выяснить эту программу. Просто хочу знать, буду ли я в курсе программы. Как исправить эту программу? Любая помощь приветствуется. Спасибо.x86 Irvine32: Язык ассемблера - Получить последний массив

«Напишите программу на языке ассемблера, который имеет массив слов. Программа загружает последний элемент массива в соответствующем размере регистр и выводит его на экране. (Не жёстко индекс последнего элемента.)»

INCLUDE Irvine32.inc  
.data 
    val1 word 1,2,3,4,5,6 
    val2 = ($-val1)/2 ; This is hardcoding 
.code 
main PROC   
    mov ax, 0 
    mov ax, val1[val2] 

    Call WriteDec 
    Call DumpRegs 
exit 
main ENDP 
END main 
+0

Когда вы говорите, «правильно», что делает ты имеешь в виду? Комментарий hardcoding? –

ответ

0

Если вы не можете использовать val2 = ($-val1)/2, один из вариантов были бы выбрать какой-либо завершающий символ для массива, например, '$' и петли, пока не будет найдено:

INCLUDE Irvine32.inc  
.data 
    val1 word 1,2,3,4,5,6,'$'    ;ARRAY WITH TERMINATING CHARACTER. 
    val2 = ($-val1)/2 ; This is hardcoding 
.code 
main PROC   
    ;mov ax, 0 
    ;mov ax, val1[val2] 

    mov si, offset val1 ;SI POINTS TO VAL1. 
    mov ax, '$'   ;TERMINATING CHARACTER. 
repeat: 
    cmp [ si ], ax 
    je dollar_found  ;IF [ SI ] == '$' 
    add si, 2    ;NEXT WORD IN ARRAY. 
    jmp repeat 

dollar_found: 
    sub si, 2    ;PREVIOUS WORD. 
    mov ax, [ si ]   ;FINAL WORD! 

    Call WriteDec 
    Call DumpRegs 
exit 
main ENDP 
END main 
+1

Пожалуйста, не дублируйте часть своего ответа по дублирующему вопросу. Гораздо лучше отметить вопрос как дубликат. (Что мы теперь можем сделать, так как я повышаю ваш больший ответ на другой вопрос). –

+0

@PeterCordes, понял, приятель! Собственно, оба ответа были разными, позже я вставил это в конец другого. Во всяком случае, OP, похоже, не нравится. –

+1

А я вижу. Я вижу только один заостренный голос по этому вопросу. Вы можете проголосовать, чтобы закрыть это как дубликат, даже если вы ответили на него. –

Смежные вопросы