本文主要是介绍汇编语言——将DX,AX组成的32位数循环左/右移3位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 将DX,AX组成的32位数循环左移3位
- 将DX,AX组成的32位数循环右移3位
将DX,AX组成的32位数循环左移3位
data segment
data ends
stack segment stacktop label worddw 100 dup (?)
stack ends
code segmentassume cs:code,ds:data,ss:stack
main proc farmov ax,datamov ds,axmov ax,stackmov ss,axlea sp,top;1110 0001 1100 1010 | 1110 0010 0001 1111;dx=E1CA ax=E21F(补码);循环左移三位后:0 0001 1100 1010 111 | 0 0010 0001 1111111;dx=0E57 ax=10FFmov dx,-7734 ;1110 0001 1100 1010(补码)mov ax,-7649 ;1110 0010 0001 1111(补码)mov cx,3
L1:shl ax,1 ;ax逻辑左移rcl dx,1 ;dx带进位循环左移adc ax,0 ;ax加上dx移出去的最高位loop L1mov ah,4chint 21h
main endp
code endsend main
将DX,AX组成的32位数循环右移3位
data segment
data ends
stack segment stacktop label worddw 100 dup (?)
stack ends
code segmentassume cs:code,ds:data,ss:stack
main proc farmov ax,datamov ds,axmov ax,stackmov ss,axlea sp,top;1110 0001 1100 1010 | 1110 0010 0001 1111;dx=E1CA ax=E21F(补码);循环右移三位后:1111 1100 0011 1001 | 010 1110 0010 0001 1;dx=FC39 ax=5C43mov dx,-7734 ;1110 0001 1100 1010(补码)mov ax,-7649 ;1110 0010 0001 1111(补码)mov cx,3
L1:shr dx,1rcr ax,1mov bx,0 ;要用mov,不改变CF,xor bx,bx 会把CF变成0adc bx,0ror bx,1add dx,bxloop L1mov ah,4chint 21h
main endp
code endsend main
这篇关于汇编语言——将DX,AX组成的32位数循环左/右移3位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!