PUSH BX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节[SP]=?, 栈顶第二字节[SP+1]=? POP AX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节[SP]=?, 栈顶第二字节[SP+1]=?
解:(AX)=1234H,(BX)=5678H,(SP)=0FFEH,栈顶字节[SP]=34H,栈顶第二字节[SP+1]=12H (AX)=1234H,(BX)=5678H,(SP)=0FFCH,栈顶字节[SP]=78H,栈顶第二字节[SP+1]=56H (AX)=5678H,(BX)=5678H,(SP)=0FFEH,栈顶字节[SP]=34H,栈顶第二字节[SP+1]=12H
6、假设A、B、C、D、X、Y为字节变量,AA、BB、YY为字变量,试利用算术运算指令编写程序段,完成以下各算术运算题。
(1)计算YY←A+B*C,其中A、B、C都是无符号数;
(2)计算(AA+BB)/(C-D),商赋给X,余数赋给Y,其中AA、BB、C、D都是带符号数; (3)计算YY←(A-B)*C,其中A、B、C都是未组合BCD码。 解:
(1)MOV AL,B MUL C ADD AL,A ADC AH,0 MOV YY,AX (2)MOV AX,AA
ADD AX,BB MOV BL,C SUB BL,D IDIV BL MOV X,AL MOV Y,AH (3)MOV AL,A
SUB AL,B
AAS
MUL C AAM
MOV YY, AX
7、利用移位指令编写程序段,实现以下运算。 (1)计算AX←AX*10,其中AX为无符号数;
(2)32位带符号数存放在寄存器DX和AX中,其中DX存放高16位,AX存放低16位计算(DX,AX)←(DX,AX)*2。
(3)32位带符号数存放在寄存器DX和AX中,其中DX存放高16位,AX存放低16位计算(DX,AX)←(DX,AX)/2。 解:
(1)SHL AX,1
MOV BX,AX SHL AX,1 SHL AX,1 ADD AX,BX (2)SAL AX,1
RCL DX,1 (3)SAR DX,1 RCR AX,1
8、指出以下指令执行后,标志寄存器OF、SF、ZF、AF、PF、CF的状态。 (1)(AL)=0FFH,(BL)=20H,执行指令:ADD AL,BL (2)(AL)=01H, (BL)=02H,执行指令:CMP AL,BL (3)(AL)=0FFH,执行指令:INC AL (4)(AL)=0,执行指令:DEC AL
(5)(AL)=0F0H,(BL)=04H,执行指令:IMUL BL (6)(AX)=1F0H,(BL)=08H,执行指令:DIV BL
(7)(AL)=12H, (BL)=34H,执行指令:TEST AL,BL (8)(AL)=98H,执行指令:SAL AL,1 解: (1) (2) (3) (4) (5) (6) (7) (8) OF 0 0 0 0 0 — 0 1 SF 0 1 0 1 — — 0 0 ZF 0 0 1 0 — — 0 0 AF 0 1 1 1 — — — — PF 0 1 1 1 — — 0 1 CF 1 1 × × 0 — 0 1 注:0表示结果为0,1表示结果为1,×表示结果不变,—表示结果不确定。