Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > преобразование двузначного шестнадцатеричного ч.


Автор: Christoph 26.9.2008, 12:52
Вот код...вроде ошибок нет, но obj не создает :( что делать? компилирую так TASM.exe /zi 1.asm
Код

;----Prg_6_1.asm---------------
;Программа преобразования двузначного шестнадцатеричного числа
;в символьном виде в двоичное представление
;Вход: исходное шестнадцатеричное число из двух цифр,
;вводится с клавиатуры.
;Выход: результат преобразования помещается в регистр dl.
;------------------------------
;------------------------------
data segment para public "data"        ;сегмент данных
message db "Введите две шестнацетиричные цифры"
data ends
stk segment stack
  db 256 dup ("?")            ;сегмент стека
stk ends
code segment para public "code"        ;начало сегмента кода
main proc                ;начало процедуры main
  assume cs:code, ds:data, ss:stk
  mov ax,data                ;aдрес сегмента данных в регистр ax
  mov ds,ax                ;ax в ds
  mov ah,9
  mov dx,offset message
  int 21h
  xor ax,ax                ;очистить регистр ax
  mov ah,1h                ;1h в регистр ah
  int 21h                ;генерация прерывания с номером 21h
  mov dl,al                ;содержание регистра al в регистр dl
  sub dl,30h                ;вычитание: (dl)=(dl)-30h
  cmp dl,9h                ;сравнить (dl) c 9h
  jle M1                ;перейти на метку M1, если dl<9h или dl=9h
  sub dl,7h                ;вычитание: (dl)=(dl)-7h
M1:                    ;определение метки М1            
  mov cl,4h                ;пересылка 4h в регистр cl
  shl dl,cl                ;сдвиг содержимого dl на 4 разряда влево
  int 21h                ;вызов прерывания с номером 21h
  sub al,30h                ;вычитание: (dl)=(dl)-30h
  cmp al,9h                ;сравнить (al) c 9h
  jle M2                ;перейти на метку М2, если al<9h или al=9h
  sub al,7h                ;вычитание: (al)=(al)-7h
M2:                    ;определение метки М2
  add dl,al                ;сложение: (dl)=(dl)+(al)        
  mov ax,4c00h                ;пересылка 4c00h в регистр с номером 21h
  int 21h                ;вызов прерывания с номером 21h
  main endp                ;конец процедуры main
  code ends                ;конец сегмента кода
  end main                ;конец программы с точкой входа main




P.s на комментарии не обращайте внимание smile

Автор: ne_tru_e 26.9.2008, 21:13
У меня нормально компилит:

Код

\LANGUAGE\Tasm>tasm /zi 1.asm
Turbo Assembler  Version 4.1  Copyright (c) 1988, 1996 Borland International

Assembling file:   1.asm
Error messages:    None
Warning messages:  None
Passes:            1
Remaining memory:  415k


и obj файл создает.

Автор: Christoph 27.9.2008, 11:49
ооо и у меня создало) не знаю глюк какой то был) а вот еще вопрос..тут просто переводит из 16-ричной в 2 - ичную системы и записывает результат в регистр dl как мне его вывести?

Автор: airyashov 29.9.2008, 12:27
преобразовать в символы и вывести

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