arquitetura de computadores: assembly - debug

16
Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação. Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098 ASSEMBLY – AULA PRÁTICA 1. Entrar no programa CMD.EXE 2. Digitar CD.. e apertar enter 3. Digitar novamente CD.. e apertar enter 4. Digitar DEBUG e apertar enter Obs.: para sair do programa DEBUG, basta digitar a tecla Q e apertar enter ARITMÉTICA EM MODO HEXADECIMAL Não é possível trabalhar com números decimais Exemplo1: Adição e Subtração Informar os dois operandos em formato hexadecimal: H 0005 0001 Resultado: 0006 0004 Pois: (0005 + 0001 = 0006) e (0005 – 0001 = 0004) Na matemática real: (5 + 1 = 6) e (5 – 1 = 4) Exemplo 2: Adição e Subtração Informar dois operandos em formato hexadecimal: H 0009 0001 Resultado: 000A 0008 Pois: (0009 + 0001) = 000A e (0009 – 0001 = 0008) Na matemática real: (9 + 1 = 10) e (9 – 1 = 8) Todos os números hexadecimais são representados com 4 posições pois a capacidade de cálculo do DEBUG usa o tipo de dados WORD para armazenamento e processamento. Exemplo3: “ Adição e Subtração com Estouro de capacidade” Informar dois operandos em formato hexadecimal: H B000 A000 Resultado: 5000 1000 Pois: (B000 + A000 = 15000) e (B000 – A000 = 1000) Na matemática real: (45.056 + 40.960 = 86.016) e (45.056 – 40.960 = 4096) Exemplo 4: Representação de Valores Negativos Informar dois operandos em formato hexadecimal: H 0005 0006 Resultado: 000B FFFF

Upload: elaine-cecilia-gatto

Post on 20-Jun-2015

424 views

Category:

Education


4 download

DESCRIPTION

Assembly - Debug

TRANSCRIPT

Page 1: Arquitetura de Computadores: Assembly - Debug

Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação.

Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098

ASSEMBLY – AULA PRÁTICA

1. Entrar no programa CMD.EXE2. Digitar CD.. e apertar enter3. Digitar novamente CD.. e apertar enter4. Digitar DEBUG e apertar enter

Obs.: para sair do programa DEBUG, basta digitar a tecla Q e apertar enter

ARITMÉTICA EM MODO HEXADECIMAL

Não é possível trabalhar com números decimais

Exemplo1: Adição e SubtraçãoInformar os dois operandos em formato hexadecimal: H 0005 0001Resultado: 0006 0004Pois: (0005 + 0001 = 0006) e (0005 – 0001 = 0004)Na matemática real: (5 + 1 = 6) e (5 – 1 = 4)

Exemplo 2: Adição e SubtraçãoInformar dois operandos em formato hexadecimal: H 0009 0001Resultado: 000A 0008Pois: (0009 + 0001) = 000A e (0009 – 0001 = 0008)Na matemática real: (9 + 1 = 10) e (9 – 1 = 8)

Todos os números hexadecimais são representados com 4 posições pois a capacidade de cálculo do DEBUG usa o tipo de dados WORD para armazenamento e processamento.

Exemplo3: “ Adição e Subtração com Estouro de capacidade”Informar dois operandos em formato hexadecimal: H B000 A000Resultado: 5000 1000Pois: (B000 + A000 = 15000) e (B000 – A000 = 1000)Na matemática real: (45.056 + 40.960 = 86.016) e (45.056 – 40.960 = 4096)

Exemplo 4: Representação de Valores NegativosInformar dois operandos em formato hexadecimal: H 0005 0006Resultado: 000B FFFFPois: (0005 + 0006 = 000B) e (0005 – 0006 = FFFF), em que FFFF é o número decimal -1Na matemática real: (5 + 6 = 11) e (5 – 6 = –1)

Exemplo 5: “Prova do Exemplo 4”Informar dois operandos em formato hexadecimal: H 0005 FFFFResultado: 0004 0006Pois: (0005 + FFFF = 0004) e (0005 – FFFF = 0006)Na matemática real: (5 + (–1) = 4 ) e (5 – (–1) = 6)

Page 2: Arquitetura de Computadores: Assembly - Debug

Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação.

Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098

CÁLCULO EM CÓDIGO DE MÁQUINA

Exemplo 1: Adição de valores hexadecimais (01D8 = AX AX + BX)

É necessário informar dois códigos para cada operação aritmética!

Digitar RDigitar R AXDigitar 000ADigitar RDigitar R BXDigitar 0001Digitar RDigitar E 0100Digitar 01Digitar RDigitar E 0101Digitar D8Digitar RDigitar TDigitar RDigitar Q

COMANDOS:R mostra o estado de todos os registradores e atribui valores aos registradoresE permite a entrada de valores em um determinado endereço de memória.

E 01000D0B:0100 70.01

E 01010DAB:0101 61.D8

0D0B é o valor do segmento eleito pelo programa DEBUG 0100 e 0101 são os valores de deslocamento que nós informamos 01 e D8 são os códigos que representam a operação de adição (OPCODES),

portanto, 01D8 é o código correto (ADD em Assembly = ADD AX, BX) 70 e 61 são valores que existem na memória naquele momento, naquela

posição

Exemplo 2: Adição de valores hexadecimais (00D8 = AL AL + BL)Digitar RDigitar R AXDigitar 000ADigitar RDigitar R BXDigitar 0001Digitar RDigitar E 0100

Page 3: Arquitetura de Computadores: Assembly - Debug

Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação.

Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098

Digitar 00Digitar RDigitar E 0101Digitar D8Digitar RDigitar TDigitar RDigitar Q

Exemplo 3: Adição de valores hexadecimais (02D8 = BL BL + AL)Digitar RDigitar R AXDigitar 000ADigitar RDigitar R BXDigitar 0001Digitar RDigitar E 0100Digitar 02Digitar RDigitar E 0101Digitar D8Digitar RDigitar TDigitar RDigitar Q

Exemplo 4: Adição de valores hexadecimais (03D8 = BX BX + AX)Digitar RDigitar R AXDigitar 000ADigitar RDigitar R BXDigitar 0001Digitar RDigitar E 0100Digitar 03Digitar RDigitar E 0101Digitar D8Digitar RDigitar TDigitar RDigitar Q

Exemplo 5: Subtração de Valores Hexadecimais (29D8 = AX AX – BX)Digitar RDigitar R AXDigitar 000A

Page 4: Arquitetura de Computadores: Assembly - Debug

Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação.

Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098

Digitar RDigitar R BXDigitar 0002Digitar RDigitar E 0100Digitar 29Digitar RDigitar E 0101Digitar D8Digitar RDigitar TDigitar RDigitar Q

Exemplo 6: Subtração de Valores Hexadecimais (29D8 = AX AX – BX)Digitar RDigitar R AXDigitar 0008Digitar RDigitar R BXDigitar 000ADigitar RDigitar E 0100Digitar 29Digitar RDigitar E 0101Digitar D8Digitar RDigitar TDigitar RDigitar Q

Obs.: FFFE = -2

Exemplo 7: Subtração de Valores Hexadecimais (28D8 = AL AL – BL)Digitar RDigitar R AXDigitar 000ADigitar RDigitar R BXDigitar 0002Digitar RDigitar E 0100Digitar 28Digitar RDigitar E 0101Digitar D8Digitar RDigitar T

Page 5: Arquitetura de Computadores: Assembly - Debug

Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação.

Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098

Digitar RDigitar Q

Exemplo 8: Subtração de Valores Hexadecimais (2AD8 = BL BL – AL)Digitar RDigitar R AXDigitar 000ADigitar RDigitar R BXDigitar 0002Digitar RDigitar E 0100Digitar 2ADigitar RDigitar E 0101Digitar D8Digitar RDigitar TDigitar RDigitar Q

Exemplo 9: Subtração de Valores Hexadecimais (2BD8 = BX BX – AX)Digitar RDigitar R AXDigitar 000ADigitar RDigitar R BXDigitar 0002Digitar RDigitar E 0100Digitar 2BDigitar RDigitar E 0101Digitar D8Digitar RDigitar TDigitar RDigitar Q

Exemplo 10: Multiplicação de Valores Hexadecimais (F7E3 = DX:AX AX * BX)Digitar RDigitar R AXDigitar 0005Digitar RDigitar R BXDigitar 0003Digitar RDigitar E 0100Digitar F7 E3

Page 6: Arquitetura de Computadores: Assembly - Debug

Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação.

Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098

Digitar RDigitar R IPDigitar 0100Digitar RDigitar TDigitar RDigitar Q

Exemplo 11: Multiplicação de Valores Hexadecimais (F7E3 = DX:AX AX * BX)Digitar RDigitar R AXDigitar 7D3CDigitar RDigitar R BXDigitar 0100Digitar RDigitar R IPDigitar 0100Digitar RDigitar TDigitar RDigitar Q

A multiplicação de dois valores numéricos de 16 bits (word) pode resultar em um valor de 32 bits (double word). 7D3C = 32.060 em decimal, e 0100 = 256 em decimal. O resultado de 7D3C * 0100 é maior que 16 bits. Portanto, uma parte do resultado é armazenado em AX e outra parte em DX. Portanto, DX:AX AX * BX, em que DX são os bits mais significativos e AX os menos significativos: 007D3C00 (8.207.360).

Exemplo 12: Multiplicação de Valores Hexadecimais (F6E3 = AX AL * BX)Digitar RDigitar R AXDigitar 0005Digitar RDigitar R BXDigitar 0003Digitar RDigitar E 0100Digitar F6 E3Digitar RDigitar R IPDigitar 0100Digitar RDigitar TDigitar RDigitar Q

Page 7: Arquitetura de Computadores: Assembly - Debug

Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação.

Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098

Exemplo 13: Divisão de Valores Hexadecimais (F7F3 = DX:AX AX /BX em que AX é o quociente e DX é o resto)

Digitar RDigitar R AXDigitar 0009Digitar RDigitar R BXDigitar 0002Digitar RDigitar E 0100Digitar F7 F3Digitar RDigitar R IPDigitar 0100Digitar RDigitar TDigitar RDigitar Q

Exemplo 14: Divisão de Valores Hexadecimais (F6F3 = AX AL /BL em que AL é o quociente e AH é o resto)

Digitar RDigitar R AXDigitar 0009Digitar RDigitar R BXDigitar 0002Digitar RDigitar E 0100Digitar F6 F3Digitar RDigitar R IPDigitar 0100Digitar RDigitar TDigitar RDigitar Q

Exemplo 15: Apresentação de CaracteresDigitar RDigitar R AXDigitar 0200Digitar RDigitar R DXDigitar 0040Digitar RDigitar E 0100 CD 21Digitar RDigitar G 0102

Page 8: Arquitetura de Computadores: Assembly - Debug

Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação.

Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098

Digitar RDigitar E 0102 CD 20Digitar RDigitar R IPDigitar 0100Digitar GDigitar UDigitar U 0100 0103Digitar Q

AX e DX são os registradores responsáveis pela apresentação de um único caracter. AX AH = 02 e AL = 00. Esses códigos tem a finalidade de escrever o caractere no monitor. Em DX você deve informar o código do caractere que quer que seja impresso. DX DH = 00 e DL = 40

CD21: é o OPCODE de INTERRUPÇÃO que deve ser informado para que o monitor de vídeo seja ativado

G: comando usado para executar a instrução de forma direta (e não passo a passo como o comando T). Deve ser informado o ponto de deslocamento que ele deve ir (endereço de parada da execução)

CD20: interrupção que finaliza o programa e retorna o comando para o S.O.

U: comando que lisa o código do programa criado

Exemplo 16: Apresentação de CaracteresDigitar RDigitar R AXDigitar 0200Digitar RDigitar R DXDigitar 0046Digitar RDigitar A 0100Digitar INT 21Digitar INT 20Digitar ENTERDigitar GDigitar UDigitar Q

A: comando utilizado para usar códigos em ASSEMBLY e não em código de máquina. Forneça sempre um ponto inicial de armazenamento de código (um valor de deslocamento).

Exemplo 17: Movimentação de DadosDigitar RDigitar R AXDigitar 1122 (AX = 1122 | AH = 11 | AL = 22)

Page 9: Arquitetura de Computadores: Assembly - Debug

Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação.

Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098

Digitar RDigitar R DXDigitar AABB (DX = 1122 | DH = AA | DL = BB)Digitar RDigitar A 0100Digitar MOV AH,DL (move o valor de DL para AH)Digitar ENTERDigitar TDigitar GDigitar R IPDigitar 0100Digitar A 0100Digitar MOV AX,DX (move o valor de DX para AX)Digitar TDigitar GDigitar A 0100Digitar MOV AH,02 (move o valor 02 para AH serviço de apresentação em vídeo)Digitar MOV DL,41 (move o valor 41 para DL representação do caractere A)Digitar INT 21 (aciona a comunicação com o monitor de vídeo)Digitar INT 20 (sinaliza a interrupção de programa pelo S.O.)Digitar ENTERDigitar R IPDigitar 0100Digitar GDigitar Q

Exemplo 18: Apresentação de Sequência de CaracteresDigitar E 0200 41 6C 6F 20 6D 75 6E 64 6F 21 24Digitar A 0100Digitar MOV AH,09Digitar MOV DX, 0200Digitar INT 21Digitar INT 20Digitar ENTERDigitar GDigitar UDigitar DDigitar D 0200Digitar Q

0200: endereço onde se encontra a sequencia de caracteres09: código usado para que uma string seja impressaD: (dump) comando com o endereço do deslocamento desejado$: símbolo que indica o fim da string – código 24

Exemplo 19: Apresentação de Valores Binários (mudança nos flags devido ao estouro)Digitar RDigitar R AXDigitar FFFF

Page 10: Arquitetura de Computadores: Assembly - Debug

Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação.

Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098

Digitar R BXDigitar 0001Digitar E 0100 01 D8Digitar RDigitar TDigitar RDigitar R AXDigitar 0001Digitar R IPDigitar 0100Digitar RDigitar TDigitar R

Mudança nos registradores de FLAG: passa de NC para CY, em que NC significa NO CARRY e CY significa CARRY, isto é, NC quando não há estouro, CY quando há.

Exemplo 20: Apresentação de Valores Binários (varredura bit a bit)Digitar RDigitar R BXDigitar 00AADigitar RDigitar A 0100Digitar RCL BL, 1 (RCL: comando usado para escrever um número em formato binário)Digitar R (Primeiro bit da direita para a esquerda. Retorna 1)Digitar R IPDigitar 0100Digitar RDigitar TDigitar R (Segundo bit da direita para a esquerda. Retorna 0)Digitar R IPDigitar 0100Digitar RDigitar TDigitar R (Terceiro bit da direita para a esquerda. Retorna 1)Digitar R IPDigitar 0100Digitar RDigitar TDigitar R (Quarto bit da direita para a esquerda. Retorna 0)Digitar R IPDigitar 0100Digitar RDigitar TDigitar R (Quinto bit da direita para a esquerda. Retorna 1)Digitar R IPDigitar 0100Digitar RDigitar T

Page 11: Arquitetura de Computadores: Assembly - Debug

Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação.

Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098

Digitar R (Sexto bit da direita para a esquerda. Retorna 0)Digitar R IPDigitar 0100Digitar RDigitar TDigitar R (Sétimo bit da direita para a esquerda. Retorna 1)Digitar R IPDigitar 0100Digitar RDigitar TDigitar R (Oitavo bit da direita para a esquerda. Retorna 0)Digitar R IPDigitar 0100Digitar RDigitar TDigitar RDigitar Q

RCL: move para a esquerda o ponteiro de bit dentro do registrador de estado CF, percorrendo todos os bits existentes, a partir da primeira posição (zero) até a última. RCL BL, 1 soma o valor 1 à parte mais baixa do registrador BX.

00AA = 10101010RCL BL, 1 01010101 + 1

Exemplo 21: Apresentação de Valores Binários (varredura bit a bit) melhoradoDigitar RDigitar R BXDigitar 00AADigitar A 0100Digitar MOV CX, 0008 (quantidade de vezes que o LOOP deverá ser executado)Digitar RCL BL, 1Digitar LOOP 0103 (usa o CX para armazenar o valor do contador. 0103 pois precisa voltar

nesse ponto)Digitar INT 20Digitar ENTERDigitar T (várias vezes até que CX = 0000 – CX é decrementado!)

Digitar QDigitar DEBUGDigitar RDigitar R BXDigitar 00AADigitar A 0100Digitar MOV AH,02 (informa ao S.O. que deve imprimir um único caractere armazenado

em DL)Digitar MOV CX,0008 (valor do contador do laço. CX é sempre um laço decrescente)Digitar MOV DL,00 (limpa o registrador toda vez que essa linha for executada)Digitar RCL BL,1 (movimentação bit a bit do byte)

Page 12: Arquitetura de Computadores: Assembly - Debug

Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação.

Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098

Digitar ADC DL, 30 (faz a adição de 30 ao valor existente no DL mudando o Carry Flag. 30 é o caractere 0.)

Digitar INT 21 (interrupção para apresentação no monitor)Digitar LOOP 0105 (inicio do loop)Digitar INT 20 (retorna o controle para o S.O.)Digitar ENTERDigitar G (executa)

Page 13: Arquitetura de Computadores: Assembly - Debug

Centro de Ciências Exatas e Sociais Aplicadas – CCESA. Curso de Bacharelado em Ciência da Computação.

Rua Irmã Arminda, 10-50. Jardim Brasil, Bauru/SP. CEP 17011-160 - PABX (14) 2107-7000 – Ramal: 7098