有两道汇编语言的作业题,可能要作为考试题,求大神帮忙解答一下

2024-11-28 14:17:50
推荐回答(2个)
回答1:

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

回答2:

③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.(成功,再次登录,就可以了)