Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите перевести с IDEAL в MASM 
:(
    Опции темы
Katiuha
Дата 8.10.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.10.2007

Репутация: нет
Всего: нет



Очень срочно нужна помощь в переводе кода с IDEAL режима в  MASM.
Чтото пыталась переделать сама.. моя попытка второй соурс

И еще просьба, нужен пошаговвые коментариии к каждой строке. Спасибо.   smile 

IDEAL CODE
Код

    ideal
    model small
    stack 256
dataseg
buff    db      2 dup(0),'h.',0dh,0ah,'$'
excode    db    0
welcome db      'Vyvod skankoda.',0dh,0ah,0ah
wlcm    db      'Vyxod ESC.',0dh,0ah
        db      'Nazhat' klavishu.',0dh,0ah,'$'
codeseg
proc keywaiting         ;proverka na nazhatije klaviatury
        push    ax
        mov     ah, 1
        int     16h
        pop     ax
        ret
endp keywaiting
proc getch              ;vozvrasciajet znachenije ascii-simvola upravliajuscej ili funkcionalnoj klavishi
        xor     ah,ah                      
        int     16h
        or      al,al
        jnz     @@10
        xchg    ah,al
        add     al,32
        jmp     short @@20
@@10:
        xor     ah,ah
        cmp     al,32
        jb      @@20
        inc     ah
@@20:
        or      ah,ah
        ret
endp getch
proc hexdigit           ;preobrazujet 4-bitovoje znachenije v ascii cifru
        cmp     dl,0ah
        jb      @@10
        add     dl,37h
        ret
@@10:
        or      dl,'0'
        ret
endp hexdigit
start:
    mov    ax,@data
    mov    ds,ax
    mov    es,ax
        mov     ah,09h
        mov     dx,offset welcome
        int     21h
repeat:
        call    keywaiting
        jz      repeat
        call    getch
        push    ax
        mov     dl,al
        shr     dl,4
        call    hexdigit
        mov     dh,dl
        mov     dl,al
        and     dl,0fh
        call    hexdigit
        xchg    dh,dl
        mov     [word buff],dx
        mov     ah,09h
        mov     dx,offset buff
        int     21h
        pop     ax
        cmp     al,1bh
        je      exit
        mov     ah,09h
        mov     dx, offset wlcm
        int     21h
        jmp     repeat
exit:
        mov     ah,4ch
        mov     al,[excode]
    int    21h
end start



Моя версия:
Код

LOCALS @@
.model small
.stack 256
.data
buff    db      2 dup(0),'h.',0dh,0ah,'$'
excode    db    0
welcome db      'Vyvod skankoda.',0dh,0ah,0ah
wlcm    db      'Vyxod ESC.',0dh,0ah
        db      'Nazhat' klavishu.',0dh,0ah,'$'
.code
proc keywaiting         ;proverka na nazhatije klaviatury
        push    ax
        mov     ah, 1
        int     16h
        pop     ax
        ret
endp keywaiting
proc getch              ;vozvrasciajet znachenije ascii-simvola upravliajuscej ili funkcionalnoj klavishi
        xor     ah,ah  
        int     16h
        or      al,al
        jnz     @@10
        xchg    ah,al
        add     al,32
        jmp     short @@20
@@10:
        xor     ah,ah
        cmp     al,32
        jb      @@20
        inc     ah
@@20:
        or      ah,ah
        ret
endp getch
proc hexdigit           ;preobrazujet 4-bitovoje znachenije v ascii cifru
        cmp     dl,0ah
        jb      @@10
        add     dl,37h
        ret
@@10:
        or      dl,'0'
        ret
endp hexdigit
start:
    mov    ax,@data
    mov    ds,ax
    mov    es,ax
        mov     ah,09h
        mov     dx,offset welcome
        int     21h
repeat:
        call    keywaiting
        jz      repeat
        call    getch
        push    ax
        mov     dl,al
        shr     dl,4
        call    hexdigit
        mov     dh,dl
        mov     dl,al
        and     dl,0fh
        call    hexdigit
        xchg    dh,dl
        mov     [word buff], dx  ; tuta eror 
        mov     ah,09h
        mov     dx,offset buff
        int     21h
        pop     ax
        cmp     al,1bh
        je      exit
        mov     ah,09h
        mov     dx, offset wlcm
        int     21h
        jmp     repeat
exit:
        mov     ah,4ch
        mov     al,[excode]
    int    21h
end start



**Error** kEYSCAN.ASM(64) Need right square bracket
*Warning* kEYSCAN.ASM(64) Argument needs type override
PM MAIL   Вверх
dumb
Дата 9.10.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



Код
mov     word ptr [buff], dx

PM MAIL   Вверх
Katiuha
Дата 9.10.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.10.2007

Репутация: нет
Всего: нет



Сенкю!   smile 
Может еще найдется добрая душа которая прокоментирует пошагово конечную программу?
Нуу уужж очень нужно  smile 

Код

LOCALS @@
.model small
.stack 256
.data
buff    db      2 dup(0),'h.',0dh,0ah,'$'
excode    db    0
welcome db      'Vyvod skankoda.',0dh,0ah,0ah
wlcm    db      'Vyxod ESC.',0dh,0ah
        db      'Nazhat' klavishu.',0dh,0ah,'$'
.code
proc keywaiting         ;proverka na nazhatije klaviatury
        push    ax
        mov     ah, 1
        int     16h
        pop     ax
        ret
endp keywaiting
proc getch              ;vozvrasciajet znachenije ascii-simvola upravliajuscej ili funkcionalnoj klavishi
        xor     ah,ah  
        int     16h
        or      al,al
        jnz     @@10
        xchg    ah,al
        add     al,32
        jmp     short @@20
@@10:
        xor     ah,ah
        cmp     al,32
        jb      @@20
        inc     ah
@@20:
        or      ah,ah
        ret
endp getch
proc hexdigit           ;preobrazujet 4-bitovoje znachenije v ascii cifru
        cmp     dl,0ah
        jb      @@10
        add     dl,37h
        ret
@@10:
        or      dl,'0'
        ret
endp hexdigit
start:
    mov    ax,@data
    mov    ds,ax
    mov    es,ax
        mov     ah,09h
        mov     dx,offset welcome
        int     21h
repeat:
        call    keywaiting
        jz      repeat
        call    getch
        push    ax
        mov     dl,al
        shr     dl,4
        call    hexdigit
        mov     dh,dl
        mov     dl,al
        and     dl,0fh
        call    hexdigit
        xchg    dh,dl
        mov     word ptr [buff], dx
        mov     ah,09h
        mov     dx,offset buff
        int     21h
        pop     ax
        cmp     al,1bh
        je      exit
        mov     ah,09h
        mov     dx, offset wlcm
        int     21h
        jmp     repeat
exit:
        mov     ah,4ch
        mov     al,[excode]
    int    21h
end start

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.