微机原理常考实验——(我的最佳代码实践)

说明:
          以下只展示微机原理实验只展示干货。

目录

说明:

          以下只展示微机原理实验只展示干货。

实验一:

自内存0500H单元开始,保存有10个无符号字节类型的数据,分别是45H、89H、11H、26H、8AH、9FH、78H、0AAH、18H、3EH,请编写程序,求这10个数的和。

要求:(1)用8位二进制数运算方式进行计算。

          (2)结果用两个字节表示。

          (3)把结果存放到050AH和050BH单元,且高字节放在050BH单元。

实验二:

编写完整汇编语言程序实现功能。

在M单元和N单元分别存有一个8位无符号数36H和95H,要求比较这两个无符号数,并根据比较结果在屏幕上显示M>N或N>M(假设这两个数不相等)。

实验三:

在内存单元BUF中存放着一个8位有符号二进制数X,试根据以下关系,用8086汇编语言编写求Y值,并将结果存入RESULT单元:X>0,Y=1;X=0;Y=0;X<0,Y=-1。

实验四:

  用汇编语言编写对AL中的数据进行“偶校验”的一个过程,并将校验结果放入AL寄存器。如果AL中“1”的个数是偶数,结果是00H,否则是0FFH。

实验五:

写出能够在屏幕上显示字符串“HELL0 WROLD!”的完整汇编语言程序。

实验六:

用汇编语言编写程序,从外设71H读取一个数M,判断其值是否在10和20之间,如果M≥20,则送0FFH给外设73H;如果M<10,则送00H给外设73H;如果M<10,则送00H给外设73H;如果10≤M<20,则送88H给外设73H。

实验七:

内存MEM单元开始存放着10个带符号字节数据,编写完整程序求其中正数、零和负数的个数,分别将他们存于PLUS、ZERO和NEGO 3个单元。

实验八:

完成下面程序,实现求内存数据区中BUF开始的10个8位无符号数的和,并存放在SUM字单元中,假设和不大于两个字节。

实验九:

请写出汇编语言程序实现如下功能:从键盘输入1~5中的任何一个数,分别在屏幕上显示“1st”、

“2st”、“3st”、“4st”、“5st”,键入其他字符则显示“*”。


正文开始: 

实验一:

自内存0500H单元开始,保存有10个无符号字节类型的数据,分别是45H、89H、11H、26H、8AH、9FH、78H、0AAH、18H、3EH,请编写程序,求这10个数的和。
要求:(1)用8位二进制数运算方式进行计算。
          (2)结果用两个字节表示。
          (3)把结果存放到050AH和050BH单元,且高字节放在050BH单元。

分析: 1,(2)中用两个字节:一定要用到adc ah,0

           2,存在内存单元下图:

内存单元图解
45H 0500H
89H 0501H
11H 0502H
26H 0503H
8AH 0504H
9FH 0505H
78H 0506H
0AAH 0507H
18H 0508H
3EH 0509H
放和的低字节 050AH
放和的高字节 050BH

3,0500H用到了数据段的ORG定位偏移地址这个伪指令----org指定这个变量区的首地址

4,之后定义内存数据区   定义buf  -----buf  DB  45H、89H、11H、26H、8AH、9FH、78H、0AAH、18H、3EH

5,结果放到具体区域就不用定义了

DATA SEGMENT  
    
    ORG 0500H  ;定位偏移地址
BUF DB 45H,89H,11H,26H,8AH,9FH,78H,0AAH,18H,3EH; 

DATA ENDS

CODE SEGMENT  
    
    ASSUME CS:CODE,DS:DATA

START:

    MOV AX,DATA
    MOV DS,AX;数据段
    MOV AX,00H ;累加器清零
    LEA BX,BUF
    MOV CX,10;
 L1:MOV DL,[BX];取第一个字节放到DL求和
    ADD AL,DL
    ADC AH,0;用16位二进制表示  
    INC BX
    LOOP L1
    MOV [050AH],AX;存放到指定位置
    MOV AH,4CH
    INT 21H
     
CODE ENDS
     END START

这是一个循环结构。

实验二:

编写完整汇编语言程序实现功能。
在M单元和N单元分别存有一个8位无符号数36H和95H,要求比较这两个无符号数,并根据比较结果在屏幕上显示M>N或N>M(假设这两个数不相等)。

分析:1,首先是无符号数

          2,显示字符串

          3,M DB 36H在M单元定义一个字节内容是36H

              N DB 95H 在N单元定义一个字节内容是95H,这个在数据段,然后比较在代码段

          4,显示字符串需要用到零九号功能,21号中断。

DATA SEGMENT  
    M DB 36H
    N DB 95H
    STR1 DB 'M>N' '$'
    STR2 DB 'N>M' '$'  
    
DATA ENDS

CODE SEGMENT  
    
    ASSUME CS:CODE,DS:DATA

START:

    MOV AX,DATA
    MOV DS,AX;数据段
    MOV AL,M;AL=36H
    CMP AL,N;M和N比较
    JA D1
    LEA DX,STR2
    MOV AH,9
    INT 21H ;显示'N>M'
    JMP EXIT  
 D1:LEA DX,STR1
    MOV AH,9
    INT 21H;M>N显示'M>N' 
EXIT: 
    MOV AH,4CH
    INT 21H ;返回DOS环境
     
CODE ENDS
     END START

这是一个单分支的结构。

实验三:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值