Исходники и листинги ::: Остальное ::: Програмулька на Ассемблере

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
  myseg segment
   a db (?)
    b db (?)
     el db 10, 13, '$'
      c db 'Pojaluysta, vvedite 2 chisla: $'
  myseg ends
 
  stacKseg segment stacK 
     db 60 dup ('?') 
  stacKseg ends
 
  myseg1 segment
     assume cs:myseg1, ds:myseg, ss:stacKseg
 
     initseg proc
        mov ax, myseg
        mov ds, ax
        mov ax, stacKseg
        mov ss, ax
        ret
     initseg endp
 
     perevod proc
       pop cx
       pop dx
       mov ah, 9
       int 21h
       push cx
       ret
     perevod endp
 
     vvod proc
        pop dx
        pop bx
        xor ax, ax 
        mov ah, 1
        int 21h
        sub al, 30h 
        mov cl, al
        mov al, 10
        mul cl 
        mov [bx], al
        mov ah, 1
        int 21h
        sub al, 30h
        add [bx], al
        mov cl,[bx]
        push dx
        ret
     vvod endp
 
     schet macro
     xor ax, ax
     add al, bh
     add al, bl
     mov cl, 4
     div cl   ; тут мы делим сумму 2-х чисел на 4.
     and ax, 11101111b  ;тут я сбрасываю 5 бит числа.
     endm
 
     print proc
     mov cx, 16
     mov ah, 02
    xor dx, dx 
  m1:
     rol bx, 1
     adc dl, 30h
     int 21h
     xor dx, dx
     loop m1
     ret
     print endp
 
     main proc
       call initseg
        lea ax, a
          push ax
        lea ax, c
          push ax
     call perevod
       call perevod
       call vvod
        lea ax, el
          push ax
       call perevod
        lea ax, b
          push ax
       call vvod
        lea ax, el
          push ax
       call perevod
        mov al, a
        mov ah, b
        mov bx, ax
       schet
        mov bx, ax
       call print
        mov ah, 4ch
        int 21h
     main endp
  myseg1 ends
  end main
<<< Предыдущая работа

Вернуться в галерею исходников
Програмулька на Ассемблере
Автор: Мак
Город: Томск
Дата: 23.12.2006  17:58
Комментариев: 3
Просмотров: 240
Оценка: 0 (0|0|0|0|0) [0]

Вернуться на главную
Авторский комментарий к работе: Пользователь вводит 2 числа, после чего выполняется следующее уравнение: (A+B)/4= ответ Вводим числа в 10-ой СИ, а ответ получаем в 2-ой СИ.
Вы не можете оценивать

КОММЕНТАРИИ К РАБОТЕ:
DaniilKhanin ::: комментарий от 25.12.2006 | 20:08
  Инструктор (ур.15)
Очки: 19261
Город:
Тв. работ: 0
Рег: 07.11.2006 (1378)
Ответ для Мак 25.12.2006 | 16:40:

кхм первый раз вижу задание на разработку программы чтобы было сложнее мдя.. что-то вы не то говорите.
Мак ::: комментарий от 25.12.2006 | 16:40
Мак Герой (ур.14)
Очки: 13410
Город: Томск
Тв. работ: 90
Рег: 04.08.2006 (377)
Забыл добавить, что это програмулька является примером использывания макросов и процедур.



Ответ для DaniilKhanin 24.12.2006 | 23:05:

Да, Вы безусловно правы, но для меня требывалось - чуточку посложнее.


--------------------
This Time I Have To Win
DaniilKhanin ::: комментарий от 24.12.2006 | 23:05
  Инструктор (ур.15)
Очки: 19261
Город:
Тв. работ: 0
Рег: 07.11.2006 (1378)
слишком сложно написал. можно проще