80x86汇编习题
题目描述:将AX寄存器中的16位数分成4组, 每组4位, 然后把这四组数分别放在AL、BL、CL和DL中
思路:
1,移动变量到AX中
2,利用循环移动的思维去操作
3,总共4组,循环4次,每循环一次,用与操作取最后4位即可
4,注意:CL要用来循环移位的时候的参数,所以要其他寄存器暂存
DATAS SEGMENT
VAR DW 6C3BH
DATAS ENDS
STACKS SEGMENT
DW 100H DUP(?)
TOP LABEL WORD
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV SS,AX
LEA SP,TOP ;初始化
MOV AX,VAR ;变量存入AX
MOV SI,0FH ;每次与操作最右边4位
MOV DX,AX ;整个AX放到DX中
AND DX,SI ;与操作,留下最后4位
MOV CL,4
ROR AX,CL ;循环右移4位
MOV DI,AX ;CX还要用,先放DI
AND DI,SI ;与操作,留下最后4位
ROR AX,CL ;循环右移4位
MOV BX,AX
AND BX,SI ;与操作,留下最后4位
ROR AX,CL ;循环右移4位
AND AX,SI ;与操作,留下最后4位
MOV CX,DI ;把DI暂存的CX的拿回来
MOV AH,4CH
INT 21H
CODES ENDS
END START