<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Asamblare - Laborator 4]]></title>
		<link>http://asm.natea.ro/</link>
		<description><![CDATA[Asamblare - http://asm.natea.ro]]></description>
		<pubDate>Thu, 29 Oct 2026 04:05:29 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Aplicatie]]></title>
			<link>http://asm.natea.ro/showthread.php?tid=8</link>
			<pubDate>Wed, 31 Oct 2018 22:20:53 +0200</pubDate>
			<guid isPermaLink="false">http://asm.natea.ro/showthread.php?tid=8</guid>
			<description><![CDATA[Se citesc 2 caractere in hexa: ex. FF<br />
Programul va afisa rezultatul: ex. 255<br />
<br />
<br />
.model small<br />
.stack 100<br />
.data   <br />
text1 db 10, 13, 'Introduceti un numar in hexa: &#36;'<br />
text2 db 10, 13, 'Rezultat: &#36;'<br />
text3 db 10, 13, 'Caracter invalid, introdu altul: &#36;'<br />
.code<br />
ascii_to_hex proc<br />
   push dx<br />
   cmp  al, '0'<br />
   jb eroare<br />
   <br />
   cmp  al, '9'<br />
   jb interval_0_9<br />
   <br />
   cmp  al, 'A'<br />
   jb eroare<br />
   <br />
   cmp  al, 'F'<br />
   jbe interval_A_F_uppercase<br />
   <br />
   cmp  al, 'a'<br />
   jb eroare<br />
   <br />
   cmp  al, 'f'<br />
   jbe interval_a_f_lowercase<br />
   <br />
eroare:<br />
   ; afisare: Caracter invalid <br />
   mov ah, 9<br />
   lea dx, text3<br />
   int  21h<br />
   <br />
   ; setam valoarea 0<br />
   mov al, 10h<br />
   jmp done<br />
interval_a_f_lowercase:<br />
   sub al, 87 ; 'A' - 10<br />
   jmp done<br />
interval_A_F_uppercase:<br />
   sub al, 55 ; 'A' - 10<br />
   jmp done<br />
   <br />
interval_0_9:<br />
   sub al, '0'<br />
   jmp done<br />
done:<br />
   pop dx<br />
   ret<br />
ascii_to_hex endp<br />
<br />
citeste_hex proc<br />
introdu_alt_nr:<br />
   mov ah, 1<br />
   int 21h<br />
   call ascii_to_hex   <br />
  <br />
   cmp al, 10h <br />
   jae introdu_alt_nr<br />
   ret<br />
citeste_hex endp<br />
start:<br />
   mov  ax, @data<br />
   mov  ds, ax<br />
   ; afisare: Introduceti un numar in hexa: <br />
   mov ah, 9<br />
   lea dx, text1<br />
   int  21h<br />
   ; citire caracter1<br />
   call citeste_hex <br />
   mov bl, al  ; salvam rezultatul in bl<br />
   shl bl, 4   ; mutam rezultatul in partea high a bl<br />
      <br />
   ; citire caracter2<br />
   call citeste_hex   <br />
   or bl, al   ; bl = bl | al;<br />
   <br />
   <br />
   mov cx, 0<br />
   mov al, bl <br />
   mov dx, 0<br />
   <br />
reia:   <br />
   mov ah, 0  <br />
   mov dl, 10<br />
   div dl     ; impartim la 10<br />
   mov dl, ah ; salvam restul impartirii in dl<br />
   push dx    ; salvam restul impartirii pe stiva<br />
   inc cx     ; salvam numarul de caractere impinse pe stiva<br />
   cmp al, 0<br />
   jne reia<br />
   ; in principiu daca numarul intial era 126, <br />
   ; pe stiva am fi pus : 6 2 1 iar in cx am avea valoarea 3<br />
   <br />
   ; afisare: Rezultat<br />
   mov ah, 9<br />
   lea dx, text2<br />
   int  21h<br />
   <br />
afiseaza_rez:<br />
   pop dx     ; pop de pe stiva a resturilor / 'in ordine inversa'<br />
   add dl, 48 ; dl + '0' conversie in ascii<br />
   mov ah, 2<br />
   int 21h<br />
loop afiseaza_rez<br />
   <br />
   ; procedura exit<br />
   mov ah, 4ch<br />
   int  21h<br />
   end start<br />
   <br />
end start]]></description>
			<content:encoded><![CDATA[Se citesc 2 caractere in hexa: ex. FF<br />
Programul va afisa rezultatul: ex. 255<br />
<br />
<br />
.model small<br />
.stack 100<br />
.data   <br />
text1 db 10, 13, 'Introduceti un numar in hexa: &#36;'<br />
text2 db 10, 13, 'Rezultat: &#36;'<br />
text3 db 10, 13, 'Caracter invalid, introdu altul: &#36;'<br />
.code<br />
ascii_to_hex proc<br />
   push dx<br />
   cmp  al, '0'<br />
   jb eroare<br />
   <br />
   cmp  al, '9'<br />
   jb interval_0_9<br />
   <br />
   cmp  al, 'A'<br />
   jb eroare<br />
   <br />
   cmp  al, 'F'<br />
   jbe interval_A_F_uppercase<br />
   <br />
   cmp  al, 'a'<br />
   jb eroare<br />
   <br />
   cmp  al, 'f'<br />
   jbe interval_a_f_lowercase<br />
   <br />
eroare:<br />
   ; afisare: Caracter invalid <br />
   mov ah, 9<br />
   lea dx, text3<br />
   int  21h<br />
   <br />
   ; setam valoarea 0<br />
   mov al, 10h<br />
   jmp done<br />
interval_a_f_lowercase:<br />
   sub al, 87 ; 'A' - 10<br />
   jmp done<br />
interval_A_F_uppercase:<br />
   sub al, 55 ; 'A' - 10<br />
   jmp done<br />
   <br />
interval_0_9:<br />
   sub al, '0'<br />
   jmp done<br />
done:<br />
   pop dx<br />
   ret<br />
ascii_to_hex endp<br />
<br />
citeste_hex proc<br />
introdu_alt_nr:<br />
   mov ah, 1<br />
   int 21h<br />
   call ascii_to_hex   <br />
  <br />
   cmp al, 10h <br />
   jae introdu_alt_nr<br />
   ret<br />
citeste_hex endp<br />
start:<br />
   mov  ax, @data<br />
   mov  ds, ax<br />
   ; afisare: Introduceti un numar in hexa: <br />
   mov ah, 9<br />
   lea dx, text1<br />
   int  21h<br />
   ; citire caracter1<br />
   call citeste_hex <br />
   mov bl, al  ; salvam rezultatul in bl<br />
   shl bl, 4   ; mutam rezultatul in partea high a bl<br />
      <br />
   ; citire caracter2<br />
   call citeste_hex   <br />
   or bl, al   ; bl = bl | al;<br />
   <br />
   <br />
   mov cx, 0<br />
   mov al, bl <br />
   mov dx, 0<br />
   <br />
reia:   <br />
   mov ah, 0  <br />
   mov dl, 10<br />
   div dl     ; impartim la 10<br />
   mov dl, ah ; salvam restul impartirii in dl<br />
   push dx    ; salvam restul impartirii pe stiva<br />
   inc cx     ; salvam numarul de caractere impinse pe stiva<br />
   cmp al, 0<br />
   jne reia<br />
   ; in principiu daca numarul intial era 126, <br />
   ; pe stiva am fi pus : 6 2 1 iar in cx am avea valoarea 3<br />
   <br />
   ; afisare: Rezultat<br />
   mov ah, 9<br />
   lea dx, text2<br />
   int  21h<br />
   <br />
afiseaza_rez:<br />
   pop dx     ; pop de pe stiva a resturilor / 'in ordine inversa'<br />
   add dl, 48 ; dl + '0' conversie in ascii<br />
   mov ah, 2<br />
   int 21h<br />
loop afiseaza_rez<br />
   <br />
   ; procedura exit<br />
   mov ah, 4ch<br />
   int  21h<br />
   end start<br />
   <br />
end start]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Tema]]></title>
			<link>http://asm.natea.ro/showthread.php?tid=7</link>
			<pubDate>Thu, 25 Oct 2018 09:46:27 +0300</pubDate>
			<guid isPermaLink="false">http://asm.natea.ro/showthread.php?tid=7</guid>
			<description><![CDATA[Problema1:<br />
Se vor citi de la tastatura 2 caractere reprezentand un numar decimal. (=&gt; caractere posibile: '0123456789')<br />
Se va afisa ca rezultat valoarea hexadecimala.<br />
<br />
exemplu: <br />
   Introduceti valoarea: 32<br />
   Rezultatule este: 0x20<br />
<br />
<br />
Parcurs pobleme ramase in 'lucrarea 4']]></description>
			<content:encoded><![CDATA[Problema1:<br />
Se vor citi de la tastatura 2 caractere reprezentand un numar decimal. (=&gt; caractere posibile: '0123456789')<br />
Se va afisa ca rezultat valoarea hexadecimala.<br />
<br />
exemplu: <br />
   Introduceti valoarea: 32<br />
   Rezultatule este: 0x20<br />
<br />
<br />
Parcurs pobleme ramase in 'lucrarea 4']]></content:encoded>
		</item>
	</channel>
</rss>