2016-10-01 16 views
0

Моя задача - суммировать AX и BX до AX без использования операндов «MOV» или «LEA». Я немного застрял здесь, вы можете мне помочь?Сборка 8086: Суммирование только 2 регистров только с MOV и LEA

; AX need to be 15, using ONLY 'mov' and 'lea'. 
; Do NOT use arithmetic instrutions (add, inc, mul, etc.) 

    mov  ax,10 
    mov  bx,4 

    lea cx,ax 
    lea cx, [cx+bx] 

Что я делаю неправильно? извините за свои ошибки, я новичок.

+0

Просто используйте 'add' инструкцию. Вот для чего это. Нет причин не использовать его. –

+0

Ваш вопрос противоречив. Вы хотите добавить без использования mov и lea или только с помощью mov и lea? –

+0

Вы всегда должны указывать точные сообщения об ошибках, которые вы получаете в своем вопросе. Или лучше, поместите сообщение об ошибке в поисковую систему. –

ответ

2

Не так очевидная вещь о lea в режиме 16-разрядной адресации сегодня заключается в том, что в качестве операнда src нельзя использовать какой-либо регистр. Если я правильно помню, вы можете добавить только базовый указатель (bp) или индекс (bx) в исходный или целевой индекс (si10 или di). dest операндом может быть любой регистр общего назначения.

Ниже допускаются:

lea ax, [si + bx] 
lea ax, [di + bx] 
lea ax, [si + bp] 
lea ax, [di + bp] 

На данный момент я считаю, что вы уже получили, как сделать задачу:

mov si, ax  ; si = ax 
lea ax, [si + bx] ; ax = ax + bx 
+0

Обычно вы должны писать его как base + index, а не index + base , Но да, это только 4 пары регистров, разрешенных в 16-битных режимах адресации. См. Также [доступные режимы адресации x86] (http://stackoverflow.com/a/34058400/224132), в котором есть некоторые ссылки на более подробные сведения о 16-разрядных материалах, но это в основном около 32/64-разрядных файлов. –

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

  • Нет связанных вопросов^_^