Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

Простой вопрос по 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.046 c
4-1115558084
BVV
2005-05-08 17:14
2005.06.29
EnableMenuItem


8-1109712268
parovoZZ
2005-03-02 00:24
2005.06.29
Частота монитора и OpenGL


1-1117604698
Mary
2005-06-01 09:44
2005.06.29
Access Violation и DLL


1-1118330914
Новичёк_!
2005-06-09 19:28
2005.06.29
Групировка


1-1117729758
byte1
2005-06-02 20:29
2005.06.29
StringGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский