Download Tutorial de Linguagem Assembly
Transcript
Este programa imprime o primeiro de dois dígitos hexadecimais. Nono exemplo -a100 297D:0100 297D:0102 297D:0104 297D:0106 MOV MOV MOV SHR AH,02 DL,BL CL,04 DL,CL 297D:0108 297D:010B 297D:010E 297D:0110 297D:0113 297D:0115 297D:0117 297D:011A 297D:011D 297D:0120 297D:0122 297D:0125 297D:0127 ADD CMP JL ADD INT MOV AND ADD CMP JL ADD INT INT DL,30 DL,3A 0113 DL,07 21 DL,BL DL,0F DL,30 DL,3A 0125 DL,07 21 20 ;Função 2 (escreve um caractere na tela) ;Põe o valor de BL em DL ;Põe o valor 04 em CL ;Desloca os 4 bits mais altos do número ao ;nibble mais à direita. ;Adiciona 30 a DL ;Compara Dl com 3A ;Salta ao endereço 0113, se menor ;Adiciona 07 a DL ;Chama interrupção do DOS ;Põe o valor de BL em DL ;Transporta fazendo AND dos números bit a bit ;Adiciona 30 a DL ;Compara Dl com 3A ;Salta ao endereço 0125, se menor ;Adiciona 07 a DL ;Chama interrupção do DOS ;Finaliza o programa Este programa imprime o segundo de dois dígitos hexadecimais. Décimo exemplo -a100 297D:0100 297D:0102 297D:0104 297D:0106 297D:0109 297D:010C 297D:010E 297D:0111 297D:0113 297D:0115 297D:0117 297D:0119 297D:011B 297D:011D 297D:011F 297D:0121 MOV INT MOV SUB CMP JLE SUB MOV SHL INT SUB CMP JLE SUB ADD INT AH,01 21 DL,AL DL,30 DL,09 0111 DL,07 CL,04 DL,CL 21 AL,30 AL,09 011F AL,07 DL,AL 20 ;Função 1 (lê caractere do teclado) ;Chama interrupção do DOS ;Põe o valor de AL em DL ;Subtrai 30 de DL ;Compara DL com 09 ;Salta ao endereço 0111, se menor ou igual ;Subtrai 07 de DL ;Põe o valor 04 em CL ;Insere zeros ... direita ;Chama interrupção do DOS ;Subtrai 30 de AL ;Compara AL com 09 ;Salta ao endereço 011f, se menor ou igual ;Subtrai 07 de AL ;Adiciona AL a DL ;Finaliza o programa Este programa pode ler dois dígitos hexadecimais. Décimo primeiro exemplo -a100 297D:0100 297D:0103 CALL INT 0200 20 ;Chama um procedimento ;Finaliza o programa -a200 297D:0200 297D:0201 297D:0203 297D:0205 297D:0207 297D:0209 PUSH MOV INT CMP JB CMP DX AH,08 21 AL,30 0203 AL,46 ;Põe o valor de DX na pilha ;Função 8 ;Chama interrupção do DOS ;Compara AL com 30 ;Salta se CF é ativado ao endereço 0203 ;Compara AL com 46