2013-11-22 3 views
-1

Я очень новичок в ассемблере, и это в основном мой первый взгляд на него. Я пытаюсь понять, как работает этот код, как сопоставленная память с предварительным выполнением и сопоставленная память после выполнения. Я знаю, что форматирование важно в сборке, я уже отформатировал код в asmIDE, но когда я вставил его здесь, он перепутался. На всякий случай, если вы, ребята, хотите знать, что это скомпилировано и в отладке, я смог получить https://db.tt/rudh5oBZ (image)Может кто-нибудь объяснить мне этот ассемблерный код?

как предварительное исполнение с отладкой, но я не уверен, как это работает. Мне нужна определенная ясность.

также может кто-то уточнить эти ключевые слова: dw, разница между $ и no $, staa, swi, std? Благодарю. Я пишу это для микроконтроллера Dragon12.

  org  $1000 ;start at ram 

    Val1 dw  $1234 
    Val2 db  16 
    Val3 dw  1234 

    Val4 equ  $06 


      org  $1020 

    Res0 ds  1 
    Res1 ds  1 
    Res2 ds  2 
    Res3 ds  1 
    Res4 ds  2 

    org  $2000 ;start at rom 

    ldaa Val2 

    staa Res0 
    ldab #Val4 
    stab Res1 
    ldd  Val3 
    stab Res2 
    ldaa $1001 
    std  Res2 
    staa Val3+1 
    swi 

    end 
+1

Нужна ясность - сначала сообщите нам процессор, о котором вы пишете. –

+0

dragon 12 hcs12 – answerSeeker

ответ

0

$ - префикс, который означает, что последующее число находится в шестнадцатеричной форме. В противном случае число будет в десятичной форме.

dw "define word" - это директива для определения двухбайтового блока памяти. Число, следующее за dw, является начальным значением этой памяти при запуске программы.

db «define byte» является аналогичной директивой, как dw, но указывает один байт.

Я не знаю язык ассемблера «дракон», но это очень общие директивы для многих ассемблеров. Однако фактические инструкции по сборке относятся только к процессору. Я мог догадаться, что такое staa, swi, std, но не будет. Вы должны быть в состоянии найти их довольно легко.

+0

В чем разница между 'ldab # Val4' и' ldab Val4'? – answerSeeker

+0

ldab # Val4 означает загрузку числа 6 (помните, что Val4 определяется равенством equ для синонима $ 06) в регистр аккумулятора B. ldab Val4 означает загрузку содержимого памяти по адресу 6 в этот регистр. –

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