Работа с битами числа - установка, сдвиг, инверсия - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д