Hужен компилятор на 64-разрядную систему - Assembler

Узнай цену своей работы

Формулировка задачи:

скачал программу фасм ,ввёл туда этот код (для примера )
org 100h
 
mov ah,09h  ;write
int 21h
int 20h
text db "привет" ,24h
запускаю а оно мне пишет что ему нужна 32 разрядная система (а у меня 64) так от вопрос,где скачать нормальный компилятор или как в этом же создать программу на 64 разряда??? зарание спс!!!!!!!!!!
PS : повторял это действие на 32 разрядной системе ,всё заработало,был создан файл "com" и запускался!!!,мож я чёт недопонимаю
PS : повторял это действие на 32 разрядной системе ,всё заработало,был создан файл "com" и запускался!!!,мож я чёт недопонимаю

Решение задачи: «Hужен компилятор на 64-разрядную систему»

textual
Листинг программы
; masm dos exe #
.model small
.data
delta dd 0.001 ;величина изменения
divK dd 5.0 ;расстояние между дугами
xr dw 0 ;координаты выводимой точки
yr dw 0 
.code
.486
start:  mov ax,@data
    mov ds,ax
    mov cx,0C470h ;количество итераций цикла
    mov ax,12h   ;инициализация графического режима 640х480х16 цветов
    int 10h
;------------------------------------------------------------------
    finit ;инициализация сопроцессора 
    fldz
    mov ah,0Ch; функция 10h прерывания - установить точку
    xor bx,bx
l1: fld st
    fld st
    fsincos     
    fmul divK
    fmul st,st(2)
    fistp word ptr xr ;заносим X в переменную для вывода на экран 
    fmul divK
    fmul
    fistp word ptr yr ;заносим Y в переменную для вывода на экран 
    push cx
    mov cx,xr
    mov dx,yr
    add dx,240; 240 - половина высоты экрана в этом режиме
    add cx,320; 320 - половина ширины экрана в этом режиме
    mov al,0A3h; цвет правой спирали
    int 10h       ;выводим точку заданным цветом 
    sub dx,yr
    sub dx,yr
    int 10h       ;выводим точку заданным цветом
    pop cx
    fadd delta;вычисляем новое значение alpha
    loop l1 ;цикл по cx
;--------------------------------------------------------------------
    mov ah,0 ;ожидание нажатия клавиши 
    int 16h
    mov ax,3 ;перевод обратно в TextMode
    int 10h
    mov ah,4Ch ;стандартный выход
    int 21h
end start

Объяснение кода листинга программы

Список элементов:

  1. Дельта (величина изменения) - dd 0.001
  2. Дистанция между дугами - dd 5.0
  3. Координаты выводимой точки (x) - dw 0
  4. Координаты выводимой точки (y) - dw 0
  5. Количество итераций цикла - mov cx,0C470h
  6. Инициализация графического режима 640х480х16 цветов - mov ax,12h
  7. Сохранение регистра AX после установки графического режима - mov ax,@data
  8. Сохранение сегмента данных в регистре DS - mov ds,ax
  9. Введение в действие сопроцессора - finit
  10. Начальное значение альфа - fldz
  11. Установка начальной точки для спирали - mov ah,0Ch
  12. Переменная для хранения X координата - xr
  13. Переменная для хранения Y координата - yr
  14. Вычисление новой точки по координатам X и Y - fld st
  15. Вычисление новой точки по координатам X и Y - fld st
  16. Вычисление новой точки по координатам X и Y - fsincos
  17. Вычисление новой точки по координатам X и Y - fmul divK
  18. Вычисление новой точки по координатам X и Y - fmul st,st(2)
  19. Сохранение новой точки X в переменной xr - fistp word ptr xr
  20. Сохранение новой точки Y в переменной yr - fmul divK
  21. Сохранение новой точки Y в переменной yr - fmul
  22. Сохранение новой точки Y в переменной yr - fistp word ptr yr
  23. Вывод точки на экран - mov al,0A3h
  24. Вывод точки на экран - int 10h
  25. Вычисление нового значения альфа - fadd delta
  26. Ввод в действие цикла по итерациям - loop l1
  27. Ожидание нажатия клавиши - mov ah,0
  28. Перевод обратно в TextMode - mov ax,3
  29. Выход из программы - mov ah,4Ch
  30. Вывод точки на экран (для случая, когда требуется 2-я спираль) - int 10h

Оцени полезность:

6   голосов , оценка 3.5 из 5
Похожие ответы