Есть две программы, вроде обе должны работать, но работает только первая, хотя по идее они должны одинаково работать...
Вот программы:
Первая
============================
DOSSEG
.MODEL small
.STACK 200h
.DATA
max db 0FFh ;max длина
len2 db 0 ;Реальная длина
str1 db 255 dup (' ') ;Собственно строка
endl db 13,10,'$' ;Переход на новую строку
.CODE
start:
mov ax, @data
mov ds, ax
mov dx, OFFSET max ;Если верить NortonGuides,
; в DX нужно писАть смещение строки, причем 1-й байт должен означать
; макс. длину строки, во 2-й байт ДОС выдаст длину введенной строки,
; а дальше будет сама строка
mov ah, 0Ah
int 21h
mov bl, len2
xor bh, bh
mov str1[bx],'$'; чтобы потом напечатать - признак конца
mov dx, OFFSET endl;На новую строку
mov ah, 09h
int 21h
mov dx, OFFSET str1;Печатать введенную строку
mov ah, 09h
int 21h
mov ah, 4Ch
int 21h
END start
===============================
Вторая:
dosseg
.model small
.stack 100h
.data
MyStr db 0FFh,0, 0FFh dup (' '),'$'; а тут я хочу то же самое,
; но работая с 1 переменной, а не с тремя. Потом хотел сдвинуть,
; но заметил, что у меня вообще ничего не вводит
.code
start:
mov ax,@data
mov ds, ax
mov dx, offset MyStr
mov ah, 0Ah
int 21h
mov ah, 4ch
int 21h
end start