07.05.2008, 10:39
общий
это ответ
Здравствуйте, STALKER58!
Программа в приложении "делает подсчет", и не только цифр...
Приложение:
data segmentCOUNT db 256 dup (0) ;будем считать ВСЕ коды, а их 100h;COUNT db 10 dup (0)CIFR db ‘0123456789ABCDEF‘IN_STR db 80, ?, 82 dup (?)OUT_STR db 0Dh, 0Ah, ?,‘-‘,?,?,‘$‘ data endssk segment stack db 256 dup(0)endscode segmentassume cs:code, ds:data, ss:skSTART: mov ax,data mov ds,ax lea dx, IN_STR mov ah, 0ah int 21h xor ah, ah lea bx, IN_STR+2 xor cx, cx mov cl, IN_STR+1CYC: mov al, [BX] ;введенный символ будет индексом в массиве COUNT; cmp al,\‘0\‘; jb NC; cmp al, \‘9\‘; ja NC; sub al, \‘0\‘ mov si, ax inc COUNT[si]NC: inc bxloop CYC; mov cx, 10; lea bx, CIFR; xor si, si ;KON:; mov al, \‘0\‘; add ax, si; mov OUT_STR+2, al; mov dl, COUNT[si]; mov al, dl;push cx; mov cl, 4; shr al, cl; xlat;pop cx;; cmp dl,1;;jb A1; mov OUT_STR+4, al; mov al, dl; and al,00001111b; xlat; mov OUT_STR+5, al; lea dx, OUT_STR; mov ah, 09h; int 21h;A1:; inc si;loop KON mov cx, 256 ;пробежим по всем кодам lea bx, CIFR xor si, si KON: mov dl, COUNT[si] cmp dl,0 ;будем выводить количество только для введенных символов je a1 mov al, dl push cx mov cl, 4 shr al, cl xlat pop cx mov OUT_STR+4, al mov al, dl and al,00001111b xlat mov OUT_STR+5, al mov ax, si ;индекс в строке COUNT есть сам код! mov OUT_STR+2, al lea dx, OUT_STR mov ah, 09h int 21hA1: inc si loop KONQUIT: mov ax, 4C00h int 21hcode endsend START
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен