Разъяснение для ptr и @data - PullRequest
       47

Разъяснение для ptr и @data

0 голосов
/ 28 октября 2019

Я пытаюсь изучить ассемблер, и появилось несколько вопросов, я хочу быть уверен, что все, что я узнал, для меня понятно, поэтому;

IDEAL
MODEL small
STACK 100h
DATASEG
var1 db 50
var2 db 150
sum dw 0
CODESEG
start:
    mov ax, @data
    mov ds, ax
    ;------------
    mov ax, 0
    add sum, [word ptr var1]
exit:
    mov ax, 4c00h
    int 21h
END start

@ data - НасколькоЯ знаю, что ассемблер определяет его, и его значением является адрес первой переменной сегмента данных. который используется в качестве указателя для регистра DS. Итак, что будет содержать DS, если я не буду его использовать?

Во-вторых, я попытался суммировать var1 и var2, после того, как я в Google это узнал, что "[word ptr var1]" не будет преобразовывать var1, которыйэто однобайтовый к двухбайтовому, он просто связывает его как двухбайтовый, что означает, что значение будет "50150" в соответствии с кодом выше. И все же, если он связывает его как двухбайтовый размер, а сумма - также двухбайтовый размер, почему я получаю эту ошибку: enter image description here

метка выхода - Должен ли я вызвать ееили он будет автоматически вызываться после завершения метки запуска? и если да, то как?

Заранее спасибо, надеюсь, что вы понимаете мои вопросы и извините за мой английский. * Кстати, если есть заголовок для этого поста, не стесняйтесь попросить меня изменить его для будущих пользователей с такими же вопросами.

...