Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Assembler] Арифметика на asm


Автор: Shurikg 15.11.2009, 18:42
Доброго всем времени суток!!

Я В асме хуже ламера так что прошу помочь

Задача:

Пользователь вводит два числа А и В в десятичном виде через макрос. Программа должна:  
1. Посчитать С=А/2+В. Установить все нечетные биты С. Расчет должен быть выполнен с использованием процедуры с переда-чей параметров через директивы.
2. Вывести на экран число С и все промежуточные числа в дво-ичном виде, с использованием макроса.

Надыбал небольшенький код, но разобраться в нем никак не могу, подскажите пожалуйста чаго в нем поменять а чаго оставить, и вообщето че тама вообще написано smile
Код

input macro
;Макрос ввода двух чисел в десятичном виде
    mov bl, 0 ; нам нужен  для второго числа, обнуляем
    lea dx, str1 ;выводм запрос на первое число
    mov ah, 9 ;нажатие клавиши
    int 21h
    l1:
        mov ah, 1
        int 21h
        cmp al, 13
        je l2
        sub al, 30h
        cmp al, 9
        jle l3
        sub al, 7
        cmp al, 15
        jle l3
        sub al, 20h
        jmp l3
    l2:
        cmp bl, 1
        je l4
        inc bl
        mov ch, cl
        xor cl, cl
        lea dx, el
        mov ah, 9
        int 21h
        lea dx, str2
        int 21h
        jmp l1    
    l3:
        shl cl, 4
        add cl, al
        jmp l1
    l4:
endm

outn macro n
  lea dx, el
  mov ah, 9
  int 21h
  lea dx, str3
  int 21h
  mov cx, 16
  xor dl, dl
  o1:
     rol n, 1
     adc dl, 30h
     mov ah, 2
     int 21h
     xor dl, dl
     loop o1
endm

calc macro
mov res, eax   
    mov bx, cx
    sub cl, 5h
    mov al, 2
    mul cl
    add al, ch
    xor cx, cx
    test al, 00010000b
    jnz c1
    mov cl, bl
    jmp e  
    c1:
       mov cl, bh 
    e:
endm


dseg segment
  str1 db 'A = $'
  str2 db 'B = $'
  str3 db 'C = A/2 + B = $'
  el db 10, 13, '$'
dseg ends

sseg segment stack
    db 60 dup (?)
sseg ends

cseg segment
    assume cs:cseg, ds:dseg, ss:sseg
    main proc
        mov ax, dseg
        mov ds, ax

    input

    calc
    mov bx, cx
   
    outn bx
        
    mov ah, 4ch
    int 21h
    main endp
cseg ends
end main



Автор: airyashov 16.11.2009, 14:49
да Я вообще в вашей формулировке не могу разобраться
Расчет должен быть выполнен с использованием процедуры с переда-чей параметров через директивы.
как это через макрос чтоли

Автор: 111u3 16.11.2009, 16:36
airyashov, не обращай внимания они все так впервый раз говорят

Shurikg, в помощь тебе гугл и учебник по ассемблеру smile короче. И не надо просьбу строить из заумных слов, а то люди не понимают в чем концепция вопроса

Автор: Mikl_ 17.11.2009, 05:48
111u3, airyashov 
перевожу, ЧТО сказал Shurikg,  smile 
"Люди добрые, позвольте к вам обратится, сами мы не местные, да задали нам преподаватели злые, да две задачи на языке незнакомом, помогите Христа ради кто чем может" smile 

Автор: 111u3 17.11.2009, 11:55
Mikl_ да знаю я что он спросил smile 
 
Shurikg, первый макрос принимает от пользователя два числа и делает из ascii(того что ты ввел) бинарные числа и возвращает их в регистрах следующий макрос считает по приведенной формуле и последний выводит результат.


to  Mikl_, если я где что упустил то это от-того что отвык от синтаксиса masm'a smile  

Автор: Mikl_ 17.11.2009, 13:53
111u3
Если правильно преподавать ассемблер, то макросы должны идти, как замыкающая тема, а тут Shurikg, похоже даже основ не знает и думает, по простоте душевной, что кому-то интересно ему всё это объяснять и делать за него, хотя ясно, что ассемблер для него -- сдать и забыть, поэтому не стоит перед подобными IT-попрошайками метать биссер  smile 

Автор: 111u3 17.11.2009, 14:53
Mikl_, та настроение с утра было не очень вот и отпостился по жесткому
да так как у нас в стране проганью учать вообще жесть, да и студенты сами привыкли что за них это кто-нибудь делать будет.
+1 за новое название подобных людей

Автор: Mikl_ 17.11.2009, 15:27
111u3
статус "IT-попрошайки" на wasm.ru/forum предлагалось вводить за посты начинающиеся с "Я В асме хуже ламера так что прошу помочь" но почему-то (из-за толлерантности наверное) потом отказались  smile 

Автор: 111u3 17.11.2009, 20:26
Mikl_, прикольно
как писали на баш-орге : осень пора сдавать лабы.

Автор: dumb 19.11.2009, 15:04
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)