Я только что попытался написать свою первую программу в сборке для x86, и я не знаю почему, но это не делает то, что я хочу. Ошибок нет, нет связи, но программа не открывается после нажатия «выполнить». Я хочу, чтобы эта программа добавила две переменные и отправила обратно их сумму. вот код:Ассемблер-добавление двух переменных
.386
.model flat, stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
.data
a dw 1h
b dw 2h
z dw 01 dup(?),0
.data?
.code
start:
mov ds, ax
mov ax, a
mov bx, b
clc
add ax, bx
mov edi, offset z
mov [edi], ax
mov ah, 09h
mov dx, z
int 21h
mov ah, 4ch
int 21h
end start
Пожалуйста, помогите мне: C
Непонятно, если вы пытаетесь скомпилировать это как 16-битный код. (если да, то почему EDI посередине?). То, что вы написали, похоже на старую сборку DOS-эпохи, не будет работать в любой современной системе. Я предлагаю вам ознакомиться с более поздними учебниками/книгами, если вы пытаетесь изучить современную сборку. – tux3
Вы, кажется, сверкаете исполняемый файл Windows, но код для DOS. Это не сработает. Вместо этого найдите учебник для сборки Windows (IIRC MASM32 содержит много примеров кода). – Michael
Обратите внимание, что DOSBox все равно сможет запустить это, если вы настаиваете на использовании прерываний DOS. – tux3