2017-05-18 4 views
2

So habe ich ein Problem, das mich mein grundlegendes Verständnis der DB (definieren Byte) und DUP (doppelte) Direktiven in Frage gestellt. Die Art, wie ich sie verstanden habe, ist:In Bezug auf 8086 Assembly DB und DUP Direktiven

  • NUM DB 34 wird eine Variable erstellen NUM genannt, und es wird mit dem 34. Wert zuweisen Praktisch NUM = 34.
  • NUM DB 34 DUP(?) wird mir eine Reihe von 34 Elemente, von denen jeder nicht zugewiesen.
  • NUM DB 3 DUP(4) würde ich ein Array namens NUM mit 3 Artikeln: 4, 4, 4.

Ist das richtig? Ich

In meinem Lehrbuch begegnet:

PRINT_SELECT DB 133 (?) 
      DB 123 (?) 

Ist das nur ein Fehler in dem Lehrbuch, oder tun, um diese zwei Zeilen Code etwas anderes völlig bedeuten?

+1

Sie sind keine Anweisungen, sie sind [Assembler-Direktiven] (http://www.tech-tools.com/cv16_dir.htm). –

+0

Mein Fehler :) Ich entschuldige mich. – saremisona

+1

'NUM = 34' .. nicht genau. Die "db 34" wird ein einzelnes Byte mit dem Wert "34" definieren. Die 'NUM' ist eine Bezeichnung, die auf dieses Byte zeigt. Zum Beispiel wird 'NUM DB 1, 2' als zwei Bytes kompiliert und erzeugt eine symbolische Markierung, die auf die erste zeigt, es wird nicht 'NUM = 1, 2' (was auch immer das bedeuten würde). Und es gibt keine Variablen in der Montage. Sie können in manchen Situationen so darüber nachdenken, aber eine solche Sichtweise wird Sie darin einschränken zu verstehen, was das ist. Und "4, 4, 4, 4" sind vier Elemente, nicht drei. Die Zeilen aus dem Buch sehen aus wie Tippfehler, es ist keine gültige Syntax. Wenn das Buch Quellen mit Beispielen enthält, überprüfen Sie diese. – Ped7g

Antwort

3
PRINT_SELECT DB 133 (?) 
      DB 123 (?) 

in den meisten Montierer entspricht

PRINT_SELECT DB 133 DUP(?) 
      DB 123 DUP(?) 

Sie können das 8086-Emulator für ein besseres Verständnis für die Montage 8086 verwenden.
Ein Beispielcode, der die Direktiven mehr erklärt, wird unten gezeigt.
Sobald Sie die DB 123 (?) verwenden, reservieren Sie grundsätzlich 123 aufeinanderfolgende Bytes (Speicherplätze) im Speicher und weisen allen einen NULL-Wert (?) Zu.

enter image description here