Baixe o app para aproveitar ainda mais
Prévia do material em texto
Questionário slide 18 Jackson Felipe Magnabosco – Turma 2016 – Ciência da computação Exercicio 1.1. Escreva uma instrução, usando operandos de 16 bit, que limpa os 8 bits superiores do registrador AX e que não altere os 8 bits inferiores. and ax, 0000000011111111b Exercicio 1.2. Escreva uma instrução, usando operandos de 16bit, que seta os 8 bits superiores do registrador AX e que não altere os 8 bits inferiores Escreva. or ax, 1111111100000000b Exercicio 1.3. Escreva uma instrução que reverte todos os bits em EAX (sem usar o operador NOT). xor eax, 0FFFFFFFFh Exercicio 1.4. Escreva uma instrução que converte um caracter uppercase em AL para lowercase, mas que não modifique AL se ele já possuir uma letra lowercase. or al, 00100000b Exercicio 2. Qual é o valor de BX depois da execução das seguintes instruções: 1. mov bx, 0FFFFh and bx, 6Bh. ;bx = 6Bh 2. mov bx, 91BAh and bx, 92h. ;bx = 93h 3. mov bx, 0649Bh or bx, 3Ah. ;bx = 1Ah 4. mov bx, 029D6h xor bx, 8181h. ;bx = 0A857h Exercicio 3 Mostre o resultado de AL (em Binário) após a execução das instruções abaixo: 1. mov al, 01101111b and al, 00101101b. ;a = 00101101 2. mov al, 6Dh and al, 4Ah. ;b = 01001000 3. mov al, 00001111b or al, 61h. ;c = 01101111 4. mov al, 94h xor al, 37h. ;d = 10100011 Exercicio 4 Mostre o resultado de AL (em Hexadecimal) após a execução das instruções abaixo: 1. mov al, 7Ah not al. ;a = 85h 2. mov al,3Dh and al, 74h. ;b = 34h 3. mov al, 9Bh or al, 35h. ;c = BFh 4. mov al, 72h xor al, 0DCh. ;d = AEh Exercicio 5 Qual será o valor final em EDX após a execução dos códigos abaixo? 1. edx = 1 2. edx = 1 Exercicio 6 Escreva uma instrução que cria um desvio para uma label (L1) quando o valor unsigned integer armazenado em DX é menor ou igual ao inteiro armazenado em CX. cmp dx, cx jbe L1 ; Jump if below or equal (if leftOP is lesser than/equal to rightOP) Exercicio 7 Escreva uma instrução que cria um desvio para uma label ( L2) quando o valor signed integer armazenado em AX é maior ou igual ao inteiro armazenado em CX. cmp ax, cx jge L2 ; Jump if greater than or equal to (if leftOP is greater than/equal to rightOP) Exercicio 8 Escreva uma instrução que converte um dígito ASCII em AL para o seu correspondente binário. Se AL já contém um valor binário (00h a 09h), não realize a conversão. and al, 00001111b Exercicio 9 Implemente os códigos abaixo em linguagem Assembly.Obs: X é uma variável 32-bit. .data X dword ? val1 dword ? 1. ; if (val1 > ecx) AND (ecx > edx) then ; X = 1 ; else ; X = 2 .code cmp val1, ecx jna L1 ; Jump if not above (same as JBE) cmp ecx, edx jna L1 mov X, 1 jmp next L1: mov X, 2 2. ;if (ebx > ecx) OR (ebx > val1) then ;X = 1 ;else ;X = 2 .code cmp ebx, ecx ja L1 ; Jump if above (if leftOP > rightOP) cmp ebx, val1 ja L1 mov X, 2 L1: mov X, 1 Exercicio 10 Implemente os códigos abaixo em linguagem Assembly. Obs: A, B e N são variáveis 32 - bit (signed integers). ; while N > 0 ; if N != 3 AND (N < A OR N > B) ; N = N - 2 ; else ; N = N - 1 ; end while .data A dword ? B dword ? N dword ? .code mov ecx, N While: cmp ecx, 0 je endwhile ; Jump if equal (leftOP = rightOP) cmp ecx, 3 Jne Condition ; Jump if not equal (leftOP != rightOP) dec ecx jmp while ; Jump if not parity (PF = 0) Condition: cmp ecx, A jb True ; Jump if below (if leftOP < rightOP) cmp ecx, B ja True ; Jump if above (if leftOP > rightOP) jmp False True: sub ecx, 2 jmp while False: dec ecx jmp while endwhile: nop Exercicio 11 .data Index DWORD 0 sum DWORD 0 sample DWORD 50 array DWORD 10, 60, 20, 33, 72, 89, 45, 65, 72,18 ArraySize = ($ - Array) / TYPE array .code mov eax , sum mov edx , sample mov esi , index mov ecx , ArraySize While: cmp esi , ecx jnl endwhile ; Jump if not less (same as JGE) cmp array [esi] , edx jng False ; Jump if not greater (same as JLE) add eax , array [esi] False: add esi, 4 jmp while Endwhile: mov sum , eax nop
Compartilhar