Странно, у меня работает. Во всяком случае переполнения не возникает, а что должен делать этот цикл с этими магическими числами - я не знаю
в смысле по прежнему исключение? и кстати т.к. в каждом байте ebx будет храниться одна десятичная цифра, то и изначальное число не должно быть больше 9999. В твоем примере больше. Хотя исключение из-за этого не возникнет Просто в ebx будет последние 4 цифры. Кстати ebx нада все таки сначала обнулить
И еще кстати, вот парa макросов(by Tom Swan, второй вспомагательный), которые переводят из hex в ASCIIZ любой системы. Вход(если я не ошибаюсь) di - смещение строки, куда помещается результат bx - нужная система счисления cx - кол-во выводимых знакомест ax - исходное hex значение MACRO numtoascii local @@value1, @@value2, @@value3, @@value4 push dx push di push si xor si, si jcxz @@value2 @@value1: xor dx, dx div bx hexdigit push dx inc si loop @@value1 @@value2: inc cx or ax, ax jnz @@value1 mov cx, si jcxz @@value4 cld @@value3: pop ax stosb loop @@value3 @@value4: mov [byte di], 0 pop si pop di pop dx ENDM numtoascii MACRO hexdigit local @@value, @@value1 cmp dl, 10 jb @@value add dl, 'A'-10 jmp @@value1 @@value: or dl, '0' @@value1: ENDM hexdigit