Описать, почему именно такое прерывание (int 29h) - Assembler
Формулировка задачи:
Делаю задания по асемблеру и нужно переделать прерывания, что бы программа работала, остальной код написано верно, исправить нужно лишь int где оно попадается. Особая просьба, описать почему именно такое прерывание, и почему решили, что нужно использовать именно его. На всякий случай, программа в EMU8086.
Код №1
Код №2
P.S. я знаю, что тут одни int29h, но как я не менял прерывания, у меня выходило либо ошибка либо просто черный екран. Особая просьба, описать почему именно такое прерывание, и почему решили, что нужно использовать именно его.
Листинг программы
- .model tiny
- .code
- org 100h
- begin:
- mov dh, 10
- mov bl, dh
- xor bh, bh
- and bl, 0F0h
- shr bl, 4
- mov al, table [bx]
- int 29h
- mov bl, dh
- and bl, 0Fh
- mov al, table [bx]
- int 29h
- mov al, 13
- int 29h
- mov al, 10
- int 29h
- Ret
- table db '0123456789ABCDEF'
- end begin
Листинг программы
- .Model tiny
- .Code
- org 100h
- begin:
- mov dh, 33
- mov al, dh
- xor ah, ah
- mov bl, 10
- xor cx, cx
- @1:
- div bl
- push ax
- inc cx
- xor ah, ah
- or ax, ax
- jnz @1
- @2:
- pop ax
- xchg ah, al
- add al, 30h
- int 29h
- loop @2
- mov al, 13
- int 29h
- mov al, 10
- int 29h
- Ret
- end begin
Решение задачи: «Описать, почему именно такое прерывание (int 29h)»
textual
Листинг программы
- model tiny
- .code
- org 100h
- begin:
- ;first
- mov dh,2Bh
- lea bx,tabl
- mov al,dh
- aam 10h
- push ax
- mov al,ah
- xlat
- int 29h
- pop ax
- xlat
- int 29h
- ;
- mov al,' '
- int 29h
- ;
- ;second
- mov dh,251
- xor cx,cx
- mov ah,dh
- @@01: mov al,ah
- aam
- push ax
- inc cx
- or ah,ah
- jnz @@01
- @@02: pop ax
- or al,'0'
- int 29h
- loop @@02
- ret
- tabl db '0123456789ABCDEF'
- end begin
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д