Работа с битами числа - установка, сдвиг, инверсия - Assembler
Формулировка задачи:
Здача:
1. Установить в 1 все биты младшего байта
2. циклично сдвинуть все байты вправо на 4 бита
3. Обратить 0,2,11,15 биты
Листинг программы
- MODEL SMALL
- STACK 100h
- DATASEG
- Set_X DB 13,10,'X = $'
- Result DB 13,10,'Result: $'
- Result1 DB 13,10,'Result1: $'
- Result2 DB 13,10,'Result2: $'
- Result3 DB 13,10,'Result3: $'
- error_ db 13,10,'incorrect number$'
- error_question db 13,10,'incorrect answer$'
- question_ db 13,10,'Close program? Yes - [Y],[y]; No - [N],[n] $'
- buff dw 6,7 Dup(?)
- CODESEG
- start:
- mov ax,@Data
- mov ds,ax
- m1:
- mov dx,OFFSET Set_X
- mov ah,09h
- int 21h
- mov ah,0ah
- xor di,di
- mov dx,offset buff
- int 21h
- mov dl,0ah
- mov ah,02
- int 21h
- mov si,offset buff+2
- cmp byte ptr [si],"-"
- jnz ii1
- mov di,1
- inc si
- ii1:
- xor ax,ax
- mov bx,10
- ii2:
- mov cl,[si]
- cmp cl,0dh
- jz endin
- cmp cl,'0'
- jl er
- cmp cl,'9'
- ja er
- sub cl,'0'
- mul bx
- add ax,cx
- inc si
- jmp ii2
- er:
- mov dx, offset error_
- mov ah,09
- int 21h
- jmp endprog
- endin:
- cmp di,1
- jnz ii3
- neg ax
- ii3:
- xchg cx,ax
- mov dx,OFFSET Result
- mov ah,09h
- int 21h
- xchg cx,ax
- test ax, ax
- jns oi1
- mov cx, ax
- mov ah, 02h
- mov dl, '-'
- int 21h
- mov ax, cx
- neg ax
- oi1:
- push ax
- call output
- ;--------------1 ?????????? ???? ? 1
- mov dx,OFFSET Result1
- mov ah,09h
- int 21h
- pop ax
- push ax
- or al, 0ffh
- call output
- ;--------------2
- mov dx,OFFSET Result2
- mov ah,09h
- int 21h
- pop ax
- push ax
- rol ax,4
- call output
- ;--------------3
- mov dx,OFFSET Result3
- mov ah,09h
- int 21h
- pop ax
- xor ax,01010111111b
- call output
- endprog:
- mov ah,09h
- mov dx, offset question_
- int 21h
- mov ah,01h
- int 21h
- cmp al,'Y'
- jz m2
- cmp al,'y'
- jz m2
- cmp al,'N'
- jnz next_1
- jmp m1
- next_1:
- cmp al,'n'
- jnz next_2
- jmp m1
- next_2:
- mov ah,09h
- mov dx, offset error_question
- int 21h
- jmp endprog
- m2:
- mov ah,04ch
- int 21h
- jmp end___
- output:
- mov bx,ax
- mov cx,16
- ob1:
- shl bx,1
- jc ob2
- mov dl,'0'
- jmp ob3
- ob2:
- mov dl,'1'
- ob3:
- mov ah,2
- int 21h
- loop ob1
- ret
- end___:
- end start
Решение задачи: «Работа с битами числа - установка, сдвиг, инверсия»
textual
Листинг программы
- xor ax,1000100000000101b
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д