Другие языки программирования и технологии

ассемблер как записать в память программы, в реальном режиме, например строку mess db "hi"? mov [1234],ex не хочет

Женя Тюлькин
Женя Тюлькин
1 677
.model tiny
.386

.code
    org 100h
Start:
;Можно так, если длина строки гарантированно 2 байта
    mov ax,word ptr [mess]
    mov word ptr [Buff1],ax

;Или так, если длина строки произвольная
    lea di,Buff2
    lea si,mess
    mov cx,Len
    rep movsb
   
    int 20h

mess db "hi"
Len equ $-mess
Buff1 db 10 dup (?)
Buff2 db 10 dup (?)
    end Start
ВТ
Виталий Тамберг
51 590
Лучший ответ
Андрей Аксенов Еще желателен CLD (для сброса флага направления) ;)
думаю те, кто знает ассемблер-здесь не отвисают
KD
Kita D.m.
29 240
На каком хоть диалекте то?
masm/nasm/yasm/fasm/tasm/AT&T?
mov ax, word ptr [mess] (мазм, в фазме без ptr)
mov bx, 3
mov word ptr [mess], bx (мазм, в фазме без ptr)
или
mycode:
mov ax, 3
mov val, ax (прокатит в мазме, но не в фазме)
mov [val], ax (мазм/fasm)
mov word ptr [val], 3 (мазм)

mov word [val], 3 (фазм)
mov [val], 3 - тут надо смотреть, что в диалекте берется по умолчанию - потому обычно и пишут размер
ret
data:
val dw 12

в AT&T все наоборот
movw $3, [mess]
(хотя скажу честно, не особо его и знаю/помню, ибо считаю извратом ;) - т. е по возможности всегда конвертил в интелловский синтаксис (masm).

Так куда строку записывать? Она ведь уже в памяти ;). А вообще строка - просто набор байтов. т. е
mov cx, длина строки
mov si, offset mess (masm, на фазме без оффсета)
mov di, offset destination
cld
rep movsb
Саня Копылов
Саня Копылов
2 026