微机原理编程题Z=(6X+2Y)⼀2,X=65H,Y=15H,用算术移位法 急急急!!!

2025-01-07 16:12:00
推荐回答(3个)
回答1:

mov ax,0065h ;x放到ax中
mov cl,3
shl ax,cl ;ax*8,也就是左移3位
mov bx,0065h ;x放到bx中
shl bx,1 ;bx*2,也就是左移1位
sub ax,bx ;ax减bx,得到x*6
mov bx,0015h ;y放到bx中
shl bx,1 ;bx左移一位,也就是y*2
add ax,bx ;两数相加
shr ax,1 ;右移一位,也就是除2

;;结果就在ax中,还有这题算出来结果没有余数,就没取余数了
-------------------------------------------------------------------------------
MOV AX,0065H
MOV BX,0015H
SAL AX,1
MOV DX,AX
MOV CL,2
SAL AX,CL
SUB AX,DX ;;;;sub改成add
SAL BX,1
ADD AX,BX
SAR AX,1
HLT

回答2:

逻辑关系没有错,移位代码写错了。SAL和SAR应该是:SHL和SHR.

回答3:

SHR是逻辑右移,数据往右移动,在左边补零。如:1000 0000->0010 0000(逻辑右移两位)
SAR是算术右移,比较特殊。他的最高位一直是不变的。如1000 0000算术右移7位后就成了1111 1111.
应该用shr