Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - Assembler

Ответить
Настройки темы
Assm - Assembler

Пользователь


Сообщения: 119
Благодарности: 0

Профиль | Отправить PM | Цитировать


У кого есть исходник к такой проге: 1)переводит число из шестнацатиричной  в десятиричную.
2) заполняет экран знаком $

Отправлено: 12:06, 28-10-2003

 

Аватара для shurikan

Старожил


Сообщения: 240
Благодарности: 1

Профиль | Отправить PM | Цитировать


MER
Код: Выделить весь код
 
mov *ah,10h 
int *16h 
... 
mov *ax,4C00 
int *21h
Вот так и считываем нажатие и код клавиши... А пока ждём нажатия, прога, естественно, стоит... И экран сохраняется


[s]Исправлено: shurikan, 5:57 18-11-2003[/s]

-------
UNIX, UNAS и др. Myself I'll like 'em


Отправлено: 01:52, 15-11-2003 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 119
Благодарности: 0

Профиль | Отправить PM | Цитировать


data  SEGMENT
mes1  db 'Enter',0Ah,0Dh,'$'
aadb 6,?
adb 5 dup (?)
data  ENDS

text  SEGMENT
     assume    CS:text, DS:data, SS:sts
main proc far

     push      DS
     xor       AX,AX
     push      ax
     mov       ax,data
     mov       DS,AX
     lea       DX,mes1
     mov       AH,09h
     int       21h
     lea       DX,aa
     mov       AH,0Ah
     int       21h

;---------------------------

Таким образом я ввожу данные с клавы. Как введенные мной данные поместить в какой-нибудь регистр (АХ например), чтобы в отладчике я мог видеть это число (понятно в шест. сист. счисления)? подскажите пожалуйста кто знает

Отправлено: 12:19, 15-11-2003 | #22


Аватара для shurikan

Старожил


Сообщения: 240
Благодарности: 1

Профиль | Отправить PM | Цитировать


MER
Далее...

[code]
* * lea * SI,a
* * xor *BX,BX
* * mov BH,[aa+1]
* * xor * DX,DX
* * and *BX,BX
* * jz * *done
* * mov CL,4

nextdig:
* * lodsb
* * cmp AL,'0'
* * jc * * error
* * cmp '9',AL
* * jnc * process
* * and *AL,0DFh
* * cmp AL,'A'
* * jc * * error
* * cmp 'F',AL
* * jc * * error
* * sub *AL,7

process:
* * sub AL,'0'
* * shl *DX,CL
* * add DX,AX
* * dec BX
* * jnz nextdig

done:
// закончили. число в DX

...

error:
//обработчик ошибки




[s]Исправлено: shurikan, 4:33 20-11-2003[/s]


[s]Исправлено: shurikan, 4:36 20-11-2003[/s]

-------
UNIX, UNAS и др. Myself I'll like 'em


Отправлено: 04:55, 18-11-2003 | #23


Пользователь


Сообщения: 119
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите плиз: Есть у меня число в регистре AX (к примеру  80B2), как вывести это число на экран именно в таком же виде, т.е число 80B2.

Отправлено: 21:16, 20-11-2003 | #24


Аватара для shurikan

Старожил


Сообщения: 240
Благодарности: 1

Профиль | Отправить PM | Цитировать


MER
Код: Выделить весь код
 
.data 
string *db 10 dup (?) 
 
.code 
 * ... 
 * mov *cx,@data 
 * mov *es,cx 
 * lea *di,string 
 
 * mov *bx,ax 
 * mov *cx,4 
 
next: 
 * push cx 
 * xor *ax,ax 
 * mov *cx,4 
 
@@1: 
 * shl *bx,1 
 * rol *ax,1 
 * loop @@1 
 
 * pop *cx 
 * add *ax,'0' 
 * cmp *'9' ,ax
 * jnc *cont 
 * add *ax,7 
 
cont: 
 * stosb 
 * loop next 
 
 * xor *ax,ax ;;; mov *ax,'$' 
 * stosb 
 
done: 
 * ...



[s]Исправлено: shurikan, 5:38 21-11-2003[/s]

-------
UNIX, UNAS и др. Myself I'll like 'em


Отправлено: 03:44, 21-11-2003 | #25


Аватара для Andreich

Старожил


Сообщения: 167
Благодарности: 0

Профиль | Отправить PM | Цитировать


вот полный код проги(com) выводяшей сканкод клавиши
Код: Выделить весь код
 
.286
cseg segment
assume cs:cseg, ds:cseg, ss:cseg, es:cseg
org 100h
begin:

mov ah,10h
int 16h

cmp al,27

je _begin_quit
mov dh,ah
mov dl,al

MOV ax,0
mov al,dh
mov bl,10h
div bl
mov n1,al
mov n2,ah

MOV ax,0
mov al,dl
mov bl,10h
div bl
mov n3,al
mov n4,ah

call _n1
call _n2
call _n3
call _n4

add n1,30h
add n2,30h
add n3,30h
add n4,30h

mov ah,9
mov dx,offset n1
int 21h
JMP BEGIN

_begin_quit:

int 20h
;---procedures---

_n1proc near

cmp n1,9
jbe q1
add n1,7
q1:

ret
_n1endp

_n2proc near

cmp n2,9
jbe q2
add n2,7
q2:
ret
_n2endp

_n3proc near

cmp n3,9
jbe q3
add n3,7
q3:
ret
_n3endp

_n4proc near
cmp n4,9
jbe q4
add n4,7
q4:
ret
_n4endp

;---data---
n1 db 0
n2 db 0
n3 db 0
n4 db 0
k db '  $'
cseg ends
end begin
код цифр на 30h больше их значенния
код букв(A..F) больше их значения на 37h


[s]Исправлено: Andreich, 22:43 21-11-2003[/s]

-------
Нет повести печальнее на свете чем повесть о заклинившем реcете...


Отправлено: 04:06, 21-11-2003 | #26


Пользователь


Сообщения: 119
Благодарности: 0

Профиль | Отправить PM | Цитировать



Andreich

Большое спасибо, но это что за переменные n1, n2, n3, n4. Где их и как описать?

Добавлено:

shurikan

Спасибо, Все работает, наПочему-то на экран ничего не выводит, почему?

Отправлено: 13:52, 21-11-2003 | #27


Аватара для shurikan

Старожил


Сообщения: 240
Благодарности: 1

Профиль | Отправить PM | Цитировать


MER
А там и нет функции вывода. Я думал ты сам сможешь отобразить строку на экране. А в коде я специально комментарий поставил. Это там, где последним символом строки заносится 0h или '$'. *Ты же сам писал:
Цитата:
* * lea * * * DX,mes1
* * mov * * * AH,09h
* * int * * * 21h
Если пользуешься ею, то заканчивай строу "долларом". Вместо mes1 поставь адрес буфера (здесь - string)

-------
UNIX, UNAS и др. Myself I'll like 'em


Отправлено: 15:45, 21-11-2003 | #28


Аватара для Andreich

Старожил


Сообщения: 167
Благодарности: 0

Профиль | Отправить PM | Цитировать


MER см выше

-------
Нет повести печальнее на свете чем повесть о заклинившем реcете...


Отправлено: 21:45, 21-11-2003 | #29


Пользователь


Сообщения: 119
Благодарности: 0

Профиль | Отправить PM | Цитировать


Andreich

Все круто, но последние две цифры всегда 1 и 0, независимо от того какое число я ввожу!

Добавлено:

shurikan

Незнаю почему, но выводит так: 7777 (не зависимо от того какое число я ввожу)

Отправлено: 12:30, 23-11-2003 | #30



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - Assembler

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Assm - Книги по assembler voodoo doctor Программирование и базы данных 13 19-11-2009 03:08
Assm - Assembler mikl Программирование и базы данных 1 13-04-2004 18:33
Assm - Помощь в Assembler'e Rish Программирование и базы данных 3 08-02-2004 19:21
Assm - Assembler Jeka Ch Программирование и базы данных 2 19-09-2003 19:57
Assm - Assembler Guest Программирование и базы данных 2 18-07-2003 16:39




 
Переход