Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Khudyakova
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 1
1

Что не так в решении?

21.01.2015, 14:45. Просмотров 351. Ответов 2
Метки нет (Все метки)

Задача вместо результата выдает точку. Что делать? Пишу все в TASM
Дан массив из 13 элементов. Вычислить разность между максимальным и минимальным элементами. Используйте адресацию по базе. Исходные данные поместить в сегменте данных. Результаты вывести на экран.
Assembler
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
STACK1 SEGMENT STACK 'STACK'
DB 32 DUP('STACK')
STACK1 ENDS
DSEG SEGMENT 
SOURCE DW 5,6,7,4,9,5,6,3,10,12,8,15,45
DEST DW 5 DUP(?)
DSEG ENDS
; =========
CSEG SEGMENT 
ASSUME CS:CSEG,DS: DSEG,SS:STACK1
BUTT PROC FAR 
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX
MOV CX,13
LEA BX,SOURCE
LEA DI,DEST
MOV AL,[BX]
MOV [DI],AL
MOV [DI]+1,AL
REPEAT: 
MOV AL,[BX]+1
CMP AL,[DI]+1
JNA MIN
CMP AL,[DI]+1
JB MAX
JMP NEXT
MAX: MOV [DI],AL
JMP NEXT
MIN: MOV [DI]+1,AL
JMP NEXT
NEXT: INC BX
LOOP REPEAT
MOV AL,[DI]+1
SUB AL,[DI]
ADD AL,30H
MOV AH,09
MOV CX,1
INT 10H 
mov ax, 4c00h
RET
BUTT ENDP
CSEG ENDS
END BUTT
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2015, 14:45
Ответы с готовыми решениями:

Что не так в этом решении?
Сразу скажу что не люблю и нет желания изучать ассемблер! Но препод требует......

Что не так(?
я все о своей программе, слепили что-то но почему то не работает подскажите где...

Что не так с кодом?
В общем само задание выглядит так:Отформатировать текст, длина строки = 40...

задача,что не так?
ATA_SEG SEGMENT A BDW 12 B DW 15 C DW 3 DATA_SEG EDNS CODE_SEG SEGMENT...

что не так с кодом?
Есть кусок кода: .ELSEIF uMsg==WM_CTLCOLOREDIT invoke...

2
Argogo
639 / 240 / 40
Регистрация: 29.03.2013
Сообщений: 532
21.01.2015, 18:43 2
Цитата Сообщение от Khudyakova Посмотреть сообщение
Задача вместо результата выдает точку. Что делать?
Чтобы точку не выдавало, надо результат преобразовать в десятичную систему. Ну и ещё кучу ошибок исправить.
Кликните здесь для просмотра всего текста
Assembler
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
STACK1  SEGMENT STACK 'STACK'
    DB  32 DUP('STACK')
STACK1  ENDS
; =========
DSEG    SEGMENT 
SOURCE  db  5,6,7,4,9,5,6,3,10,12,8,15,45
DSEG    ENDS
; =========
CSEG    SEGMENT 
ASSUME  CS:CSEG, DS:DSEG, SS:STACK1
BUTT    PROC    FAR
    XOR AX, AX
    PUSH    DS
    PUSH    AX
 
    MOV AX, DSEG
    MOV DS, AX
 
    LEA BX, SOURCE
    MOV CX, 13-1
    MOV AL, [BX]
    inc bx
    mov dl, al  ;min
    mov dh, al  ;max
REPEAT: 
    MOV AL,[BX]
    cmp al, dl
    jb  MIN
    cmp al, dh
    jna NEXT
;MAX:
    mov dh, al
    JMP short NEXT
MIN:
    mov dl, al
;   JMP NEXT
NEXT:
    INC BX
    LOOP    REPEAT
 
    mov al, dh
    sub al, dl
    call    AL_Bin2AsciiDec_and_Disp
    RET
BUTT    ENDP
;-------------------
AL_Bin2AsciiDec_and_Disp    PROC    NEAR
    push    ax
    push    dx
 
    aam         ; al - остаток от деления al на 10, ah - результат деления al на 10
    test    ah, ah
    jz  last_digit
    mov dl, al
    mov al, ah
    aam
    test    ah, ah
    jz  second_digit
;first digit
    call    DispAL
    mov al, dh
second_digit:
    call    DispAL
    mov al, dl
last_digit:
    call    DispAL
 
    pop dx
    pop ax
    ret
AL_Bin2AsciiDec_and_Disp    ENDP
;-------------------
DispAL  PROC    NEAR
    push    ax
    push    bx
    or  al, 30h
    mov ah, 0eh
    mov bl, 7
    INT 10H
    pop bx
    pop ax
    ret
DispAL  ENDP
;-------------------
CSEG    ENDS
    END BUTT
0
eremey
14 / 5 / 2
Регистрация: 13.01.2015
Сообщений: 13
21.01.2015, 19:21 3
Привет.
версия #2

Assembler
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
IDEAL
MODEL   small
STACK   256
 
DATASEG
SOURCE  DW 5,6,7,4,9,5,6,3,10,12,8,15,45
DEST    DW 5 DUP(0)
 
CODESEG
Start:
MOV AX, @data
MOV DS, AX
MOV ES, AX
 
MOV CX,13
LEA BX,[SOURCE]
LEA DI,[DEST]
MOV AL,[BX]
MOV [DI],AL
MOV [DI+1],AL
 
REPEAT: 
MOV AL,[BX+1]
CMP AL,[DI+1]
JNA MIN
 
CMP AL,[DI+1]
JB MAX
JMP NEXT
 
MAX:
MOV [DI],AL
JMP NEXT
 
MIN:
MOV [DI+1],AL
JMP NEXT
 
NEXT:
INC BX
LOOP REPEAT
MOV AL,[DI+1]
SUB AL,[DI]
ADD AL,030h
 
;MOV AH,09
;MOV CX,1
;INT 10H 
 
MOV AH, 04Ch
INT 021h
 
END Start
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2015, 19:21

что-то не так вычитает
что-то не так тут? почему то записывается в eax и в edx странные вещи...

Разъясните что не так
Разъясните что не так title labrab3_8 ;сегмент данных содержащий заданный...

masm и RadASM что не так?
Всем салют!!! Я как и все начинающие пытаюсь разобратся в асеммблере, но что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru