HELP! Помогите решить маленькую задачку! Я новичок...
Добавлено: 27 фев 2005, 18:43
Это исходный код:
;direktyva .exe failo sukurimui
#MAKE_EXE#
;duomenu segmentas
data segment para public "data"
message db "Iveskite dvizenkli sesioliktaini skaiciu: $"
data ends
;steko segmentas
stk segment stack
db 100h dup (?)
stk ends
;kodo segmentas
code segment para public "code" ;kodo segmento pradzia
;*****************************************
;main procedura
main proc ;main proceduros pradzia
assume cs:code,ds:data,ss:stk ;surisa segmento registrus su segmentu vardais
;segmento registro ds inicializacija
mov ax,data ;duomenu segmento adresas registre ax
mov ds,ax ;ax i ds
;"Iveskite dvizenkli sesioliktaini skaiciu: " teksto isvedimas i ekrana
mov ah,9
mov dx,offset message
int 21h
xor ax,ax ;registro ax isvalymas
;kreipimasis i OS del simbolio ivedimo is klaviaturos
mov ah,1h ;1h i registra ah irasymas
int 21h ;21h pertraukimo generavimas
mov dl,al ;al i dl irasymas
sub dl,30h ;skirtumas: (dl)=(dl)-30h
cmp dl,9h ;(dl) su 9h palyginimas
jle M1 ;jeigu dl<=9h, persokti prie zymes M1
sub dl,7h ;skirtumas: (dl)=(dl)-7h
M1:
;registro dl turinio perstumimas per 4bitus i kaire
mov cl,4h ;4h i cl registra irasymas
shl dl,cl ;registro dl turinio perstumimas per 4bitus i kaire
int 21h ;21h pertraukimo iskvietimas
sub al,30h ;skirtumas: (al)=(al)-30h
cmp al,9h ;(al) su 9h palyginimas
jle M2 ;jeigu al<=9h, persokti prie zymes M2
sub al,7h ;skirtumas: (al)=(al)-7h
M2:
add dl,al ;sudetis: (dl)=(dl)+(al)
mov ax,4c00h ;4c00h irasymas i ax
int 21h ;21h pertraukimo iskvietimas
main endp ;proceduros main pabaiga
;*****************************************
code ends ;kodo segmento pabaiga
end main ;programos pradzios tasko nustatymas
А это надо сделать:
Дополнить программу инструкциями, с помощью которых будет разрешён ввод шестнадцатеричных чисел соответствующих символам строчными буквами (a, b, c, d, e, f) и их распознать, чтобы программа разрешала вводить только цифры 0...9 и буквы A...F и a...f. Полученный результат (регистр DL) вывести на экран в десятичном и шестнадцатиречном ввиде.
ПОМОГИТЕ. Уже 2 дня мучаюсь... =\
;direktyva .exe failo sukurimui
#MAKE_EXE#
;duomenu segmentas
data segment para public "data"
message db "Iveskite dvizenkli sesioliktaini skaiciu: $"
data ends
;steko segmentas
stk segment stack
db 100h dup (?)
stk ends
;kodo segmentas
code segment para public "code" ;kodo segmento pradzia
;*****************************************
;main procedura
main proc ;main proceduros pradzia
assume cs:code,ds:data,ss:stk ;surisa segmento registrus su segmentu vardais
;segmento registro ds inicializacija
mov ax,data ;duomenu segmento adresas registre ax
mov ds,ax ;ax i ds
;"Iveskite dvizenkli sesioliktaini skaiciu: " teksto isvedimas i ekrana
mov ah,9
mov dx,offset message
int 21h
xor ax,ax ;registro ax isvalymas
;kreipimasis i OS del simbolio ivedimo is klaviaturos
mov ah,1h ;1h i registra ah irasymas
int 21h ;21h pertraukimo generavimas
mov dl,al ;al i dl irasymas
sub dl,30h ;skirtumas: (dl)=(dl)-30h
cmp dl,9h ;(dl) su 9h palyginimas
jle M1 ;jeigu dl<=9h, persokti prie zymes M1
sub dl,7h ;skirtumas: (dl)=(dl)-7h
M1:
;registro dl turinio perstumimas per 4bitus i kaire
mov cl,4h ;4h i cl registra irasymas
shl dl,cl ;registro dl turinio perstumimas per 4bitus i kaire
int 21h ;21h pertraukimo iskvietimas
sub al,30h ;skirtumas: (al)=(al)-30h
cmp al,9h ;(al) su 9h palyginimas
jle M2 ;jeigu al<=9h, persokti prie zymes M2
sub al,7h ;skirtumas: (al)=(al)-7h
M2:
add dl,al ;sudetis: (dl)=(dl)+(al)
mov ax,4c00h ;4c00h irasymas i ax
int 21h ;21h pertraukimo iskvietimas
main endp ;proceduros main pabaiga
;*****************************************
code ends ;kodo segmento pabaiga
end main ;programos pradzios tasko nustatymas
А это надо сделать:
Дополнить программу инструкциями, с помощью которых будет разрешён ввод шестнадцатеричных чисел соответствующих символам строчными буквами (a, b, c, d, e, f) и их распознать, чтобы программа разрешала вводить только цифры 0...9 и буквы A...F и a...f. Полученный результат (регистр DL) вывести на экран в десятичном и шестнадцатиречном ввиде.
ПОМОГИТЕ. Уже 2 дня мучаюсь... =\