2013-06-14 3 views
0

Я начинаю изучать сборку. Я использую DOSBOX под Windows 7 64bit. Мне интересно, как я могу показать значение регистра в сборке. Например, я написал следующий код:Как показать результат в сборке

mov ax,20 ; ax will be 20 
mov cx,10 ; cx will be 10 
sub ax,cx ; ax will be 10 (ax-cx,20-10) 

Как я могу отобразить содержимое регистра AX (который должен быть 10)?

+0

Возможные дубликат: HTTP: // StackOverflow .com/вопросы/13050433/дисплей-результаты-оф-ан-ASM-файл – jerry

ответ

2

Вы не указали целевой ОС или ассемблер, но если мы предположим, DOS и NASM (не должно быть трудно адаптироваться к TASM/MASM):

org 100h 
section .text 

mov ax,123 

mov byte [buffer+9],'$'  ; Insert string terminator 
lea si,[buffer+9] 

; create a string representation of the value in AX 
mov bx,10 
itoa: 
    xor dx,dx  ; clear dx, since we'll divide dx:ax by bx 
    div bx   ; ax = dx:ax/10, dx = dx:ax % 10 
    add dl,'0'  ; add '0' to the remainder to get a character in the range '0'..'9' 
    dec si 
    mov [si],dl  ; store it in the buffer 
    cmp ax,0 
    jnz itoa 

mov ah,9   ; print string 
mov dx,si 
int 21h 

mov ax,4Ch   ; exit to DOS 
int 21h 

buffer: resb 10