Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Простой вопрос по ASM   Найти похожие ветки 

 
Новичоккк   (2005-05-31 19:56) [0]

Такой код:
SSEG segment stack
db 256 dup (?)
SSEG ends

CSEG segment
assume CS:CSEG,DS:CSEG,SS:SSEG

start:
lea dx,sl
mov ah,9
int 21h

int 20h

sl db "text",10,13,"$"

CSEG ends
end start

Почему неправильно работает? Уже около часа сижу и не могу понять =( Текст вроде выводится, но перед ним вылезает куча мусора.


 
raidan ©   (2005-05-31 20:15) [1]

Когда я был молодой, то писал так:


; Turbo Assembler    Copyright (c) 1988, 1991 By Borland International, Inc.

; HELLO.ASM - Display the message "Hello World"

; From the Turbo Assembler Users Guide - Getting started

  .MODEL small
  .STACK 100h
  .DATA
HelloMessage DB "Hello, world",13,10,"$"
  .CODE
  mov  ax,@data
  mov  ds,ax                  ;set DS to point to the data segment
  mov  ah,9                   ;DOS print string function
  mov  dx,OFFSET HelloMessage ;point to "Hello, world"
  int  21h                    ;display "Hello, world"
  mov  ah,4ch                 ;DOS terminate program function
  int  21h                    ;terminate the program
  END


 
begin...end ©   (2005-05-31 20:17) [2]

> Новичоккк   (31.05.05 19:56)

Дык этта... ASSUME -- оно, конечно, кульно и рульно. Но это только половина дела. Надо ведь ещё и DS инициализировать. 9h int 21h ищет строку в паре DS:DX.


 
Anatoly Podgoretsky ©   (2005-05-31 20:33) [3]

Возможно он расчитывает на некоторую неявную инициализацию.


 
Новичокк   (2005-05-31 21:52) [4]

2Anatoly Podgoretsky
Да, рассчитывал. Понял что был не прав =)

2begin...end
Спасибо за ответ. Исправил. Добавил:
...
mov ax,CSEG
mov ds,ax
...

И вот еще возник вопрос:
У меня WinXP SP2. Почему то не хотят удаляться некоторые откомпилированные EXE-файлы: "объект используется другим пользователем или программой", хотя программа закрыта (на пример из первого поста такая же реакция). Единственный вариант удалить файл - перезагрузить компьютер и удалить через командную строку (или аналогичным способом), не открывая при этом папку с файлом Explorer"ом. Если открыть папку, а потом закрыть, то через командную строку файл уже не удаляется. Кто-нибудь сталкивался с подобным? Как это можно исправить?



Страницы: 1 вся ветка

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
3-1115987536
Roman_SVT
2005-05-13 16:32
2005.06.29
Delphi и Mysql


1-1118226809
Руслан
2005-06-08 14:33
2005.06.29
обновить DBGrid


14-1117554968
Новичоккк
2005-05-31 19:56
2005.06.29
Простой вопрос по ASM


1-1118264735
Новичок :)
2005-06-09 01:05
2005.06.29
Обработка собития формы !!!


14-1117127529
palva
2005-05-26 21:12
2005.06.29
Про гнилой строй