有两道汇编语言的作业题,可能要作为考试题,求大神帮忙解答一下
有两道汇编语言的作业题,可能要作为考试题,求大神帮忙解答一下
1. 判断DATA单元中的数据,若为正数则存入DATA_A单元,若为负数就存入DATA_B单元中
2. 编程统计寄存器AX中相邻位的变化次数
感谢感谢~~~
答案:③shutdown normal
④startup mount
⑤alter database open;报错
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
接下来
⑥alter database open resetlogs;
Database altered.(成功,再次登录,就可以了)
其他:1.判断DATA单元中的数据,若为正数则存入DATA_A单元,若为负数就存入DATA_B单元中
MOV AL,DATA
TEST AL,80H
JZ Z
MOV DATA_B,AL
JMP EXIT
Z:
MOV DATA_A,AL
EXIT:
;结束
2. 编程统计寄存器AX中相邻位的变化次数
data segment
N DB 0 ; AX中相邻位的变化次数
W DB 0 ;AX中前一次移位的值(0或1)作为比较位
data ends
code segment
assume cs:code, ds:data
main proc far
start:
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
MOV AX,1010101000000010B ;假如AX等于该值,可以看到相邻位的变化次数为9
MOV CX,16
TEST AX,8000H ;首先确定AX最高位的值,将该位作为比较的初值
JZ F_0
INC W ;将比较的初值放入比较位
F_0:
ROL AX,1 ;将AX左移一位
JC BE1
MOV DL,0
JMP COMP_1
BE1:
MOV DL,1
COMP_1:
CMP DL,W ;将“进位位”与原来“比较位”进行比较
JZ NO_C
INC N ;不相等则相邻位的变化次数增1
MOV W,DL
NO_C:
LOOP F_0 ;循环
;-------------------------
ret
main endp
code ends
end start
上一个:单片机无线通信 汇编语言编程
下一个:汇编语言的逻辑运算中异或怎么算,能不能给个例子