当前位置:编程学习 > 汇编语言 >>

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

有两道汇编语言的作业题,可能要作为考试题,求大神帮忙解答一下 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

上一个:单片机无线通信 汇编语言编程
下一个:汇编语言的逻辑运算中异或怎么算,能不能给个例子

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,