微型计算机原理实验程序,微机原理 实验程序

微机原理实验答案

1、已知有20个8位二进制数,存放在以1000H开始的存储区域内。试编写一个完整的汇编语言程序,统计其中的正数、负数、零的个数并存在1014H开始的存储区内。

STACK SEGMENT STACK

DB 64 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV SI,1000H

MOV DI,1014H

MOV CX,0014H

MOV BYTE PTR[DI],0

MOV BYTE PTR[DI+1],0

MOV BYTE PTR[DI+2],0

AA1:MOV AL,[SI]

CMP AL,0

JG AA2

CMP AL,0

JL AA3

INC BYTE PTR[DI+2]

INC SI

LOOP AA1

AA2: INC BYTE PTR[DI]

INC SI

LOOP AA1

AA3:INC BYTE PTR[DI+1]

INC SI

LOOP AA1

INT 03H

CODE ENDS

END START

2、在1000H开始的单元中存放着一个字(16位),将字中1的个数存入1002H单元中。

算法:要测出1的个数就应该逐位比较,可根据最高有效位是否为1来计数,然后用移位的方法把各位数逐次移到最高位去。

可以用测试字是否为0来作为结束条件,这样可缩短程序的执行时间,对不同的字循环次数不同,因此选用当型循环结构。

STACK SEGMENT STACK

DW 64 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV SI,1000H

MOV DI,1002H

MOV CX,0

MOV AX,[SI]

A0:TEST AX,0FFFFH

JZ A1

JNS A2

INC CX

A2:SHL AX,1

JMP A0

A1: MOV [DI],CX

INT 03H

CODE ENDS

END START

3、偏移地址为1000H开始的顺序20个单元中,存放着某班20名同学某门考试的成绩。

编写程序统计大于等于90分,80-90分;70-79分;60-69分;小于60分的人数各位多少,并将结果放在同一数据段,偏移地址为1014H开始的顺序单元中。

STACK SEGMENT STACK

DB 64 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV SI,1000H

MOV DI,1014H

MOV CX,0014H

MOV BYTE PTR[DI],0

MOV BYTE PTR[DI+1],0

MOV BYTE PTR[DI+2],0

MOV BYTE PTR[DI+3],0

MOV BYTE PTR[DI+4],0

AA1: MOV AL,[SI]

CMP 90

JC AA2

INC BYTE PTR[DI]

INC SI

LOOP AA1

AA2:CMP 80

JC AA2

INC BYTE PTR[DI+1]

INC SI

LOOP AA1

AA3:CMP 70

JC AA2

INC BYTE PTR[DI+2]

INC SI

LOOP AA1

AA4:CMP 60

JC AA2

INC BYTE PTR[DI+3]

INC SI

LOOP AA1

AA5: INC BYTE PTR[DI+4]

INC SI

LOOP AA1

INT 03H

CODE ENDS

END START

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值