Последние записи
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
26th
Май
Вывод физ. и stack’ого адреса переменной / 8086
Posted by Chas under Топик-обзор
Ребят имею представление как получить стековый адрес и физ. адрес переменной, но не могу понять как можно вывести все это дело на экран.
То есть я как понимаю, я получу значение адреса, значение переводить в Hex, с Hex’а в строку и только потом вывод.
coNsept:
Вообщем я разобрался с выводом адреса, может кому пригодиться.
.186
.Model Small
.Stack 100H
.DATA
Buffer DW 0ABH, 0CDH, 0EFH
.CODE
InitSeg Proc
Mov Ax, @DATA
Mov Ds, Ax
Ret
InitSeg Endp
PressKey Proc
Mov Ax, 0C07H
INT 21H
Ret
PressKey Endp
Exit Proc
Mov Ax, 4C00H
INT 21H
Ret
Exit Endp
GetSymbol Proc
Push Bp
Mov Bp, Sp
Sub Sp, 4H
Mov Dx, [Bp + 4H]
Mov Ah, 02h
INT 21H
Mov Sp, Bp
Pop Bp
Ret
GetSymbol Endp
EndLine Proc
Mov Dx, 0AH
Mov Ah, 02H
INT 21H
Ret
EndLine Endp
OutputAddr Proc
Push Bp
Mov Bp, Sp
Sub Sp, 4H
Mov Ax, [Bp + 4H]
Mov Cl, 16-4
Xchg Dx, Ax
@Cicle:
Mov Ax, Dx
Shr Ax, Cl
And Al, 0FH
Add Al, '0'
Cmp Al, '9'
Jbe @NotHexDigit
Add Al, 'A'-('9'+1)
@NotHexDigit:
int 29H
Sub Cl, 4
Jnc @Cicle
Mov Sp, Bp
Pop Bp
Ret
OutputAddr Endp
Begin:
Call InitSeg
Mov Dx, Buffer
Push Dx
Call OutputAddr
Mov Dx, ' '
Push Dx
Call GetSymbol
Lea Dx, Buffer
Push Dx
Call OutputAddr
Call EndLine
Call PressKey
Call Exit
End Begin
vadimych:
Вот рабочий код. Сначала выводится адрес hextable, потом — стековый адрес возврата из программы.
.model tiny
.code
.186
org 100h
start:
lea ax,hextable
mov bx,ax
lea di,buf
call @f
inc di
mov bp,sp
mov ax,[bp+2]
call @f
exit:
lea dx,buf
mov ah, 9H
int 21h
xor ax,ax
int 16h
ret
@@:
mov cx,4
@@:
rol ax,4
push ax
and al,0fh
xlatb
stosb
pop ax
loop @b
ret
hextable db '0123456789ABCDEF'
buf db 4 dup (?),' ',4 dup (?),'$'
end start
1.rar (147 байт) |
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)