Возможно переполнение стека в коде сборки - PullRequest
2 голосов
/ 30 марта 2011

привет, у меня проблема с программой для дат. Я пытаюсь писать на ассемблере с помощью nasm, программа работает правильно, но когда я ее запускаю, она отображает мою дату вместе с иностранными символами, я думаю, это проблемасо стеком.Как я могу это исправить, пожалуйста, помогите мне: - (

это программа

org 100h
bits 16d 

section .data

endProg db 0ah,0dh,"Program Terminated","$"
year  db 0, 0, '\'        
month  db 0, 0, '\' 
day  db 0ah,0dh, 0 
skipLine db 0ah,0dh
hour  db 0,0, ':'       
min  db 0, 0, ':' 
sec  db 0, 0, ' '    

section .bss

section .text

start:

call clear_screan

; get date
mov ah, 2ah                   
int 21h

; year
add cx, 0f830h                
mov ax, cx 
call convert
mov [year], ax 

; month
mov al, dh                    
call convert
mov [month], ax 

 ; day
mov al, dl                    
call convert
mov [day], ax

mov ax,skipLine

; get time
mov ah, 2ch                   
int 21h 

; hour
mov al, ch                    
call convert 
mov [hour], ax 

; minute
mov al, cl                    
call convert
mov [min], ax 

; second
mov al, dh                    
call convert
mov [sec], ax

pop ax
mov ax,skipLine

   ;display output
   mov dx,year
   mov ah,09h
   int 21h

   mov DX,endProg
   mov AH,09h
   int 21h

int 20h

;..................processes...........................

    clear_screan:
  mov AX,03h
  int 10h
  ret

    convert:
  push cx
  xor ah, ah 
  mov cl, 10 
  div cl 
  add ax, 3030h
  pop cx
  ret 

1 Ответ

3 голосов
/ 30 марта 2011
;display output
mov dx,year
mov ah,09h
int 21h

Я думаю, что отображаемая здесь строка не заканчивается знаком $ - вероятно, она отображает символы до тех пор, пока не достигнет байта, представляющего $ (36) где-то в памяти, это может быть причиной отображения искусственные персонажи.

Я подумал, что вы должны использовать offset и для печати строк (см. пример ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...