DATA1 SEGMENT
data DW 90, 95, 54, 65, 36, 78, 66, 0, 99, 50, -1
Average DW 0
DATA1 ENDS
CODE1 SEGMENT
ASSUME CS:CODE1, DS:DATA1
START: MOV AX, DATA1
MOV DS, AX
XOR AX, AX
XOR DX, DX ;用(DX,AX)来保存数组元素之和
XOR CX, CX ;用CX来保存数组元素个数
LEA SI, data ;用指针SI来访问整个数组
again: MOV BX, word ptr [SI]
CMP BX, 0
JL over
ADD AX, BX
ADC DX, 0 ;把当前数组元素之值加到(DX,AX)中
INC CX ;数组元素个数加1
ADD SI, 2
JMP again
over: JCXZ exit ;防止零作除数,即数组是空数组
DIV CX
MOV Average, AX
exit: MOV AX, 4C00H
INT 21H
CODE1 ENDS
END START 

score的平均整数,并存入内存字变量Average中,数组以-1为结束标志。

xor eax,eax

是异或运算,两数相反为1;两数相同为0。由于这两个数相同,异或后等于清0 ;由于它比mov eax,0效率高,所以一般用它。

LEA 取有效地址指令 (Load Effective Address )
取源操作数地址的偏移量,并把它传送到目的操作数所在的单元。

下面两条指令就是等价的,他们都取TABLE的偏移地址,然后送到BX中,即

LEA BX,TABLE
MOV BX,OFFSET TABLE

带进位加法指令 ADC(Addition Carry)
格式
ADC OPRD1,OPRD2
功能
OPRD1<--OPRD1 + OPRD2 + CF
说明
1. OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数.
OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数.
2. OPRD1和OPRD2均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的,但不允许两个都是存储器操作数.
3. 加法指令运算的结果对CF、SF、OF、PF、ZF、AF都会有影响.以上标志也称为结果标志.
4. 该指令对标志位的影响同ADD指令.

div是除法指令,使用div做除法的时候应注意以下问题:
1、除数:有8位和16位两种,在一个寄存器或者内存中。
2、被除数:默认放在AX或(DX和AX)中,如果除数为8位,被除数为16位,被除数默认在AX中存放,如果除数为16位,被除数为32位,被  除数则在(DX和AX)中存放,DX存放高16位,AX存放低16位。
3、结果:如果除数是8位,则AL存储除法操作的商,AH存储除法操作的余数;如果除数是16位,则AX存储除法操作的商,DX存储除法操作的余数。
格式如下:
div reg
div 内存单元
以100001/100为例,100001大于65535,所以只能用dx和ax两个寄存器联合存放100001,也就是说要进行16位的除法。除数100小于255,可以在一个8位的寄存器中存放,但是被除数是32位的,除数应为16位,所以要使用一个16位的寄存器来存放除数100.
dx和ax分别存放100001的高16位和低16位值,所以将100001表示为16进制的形式:186a1h.

data1段的地址被编译为00710h,10个数据被放入此;但是为什么在模拟器中此地址出现在栈的模拟中;

0710被放入DS寄存器;SI目前是0;

第一个数被放入BX中;over标号编译后的地址为020h;

第一个数加完,AX为5A(10进制的90);

看BX是否为0;

加完一个数,CX为1;

SI指向下一个数;again编译后的地址为0Eh;

累加;结果在AX中;

加完,看CX为10,AX为0279h=10进制的633;

看前面图,在整个过程中进位标志CF一直未变;

看变量窗口,除完后的结果为003Fh,此结果不包括余数;

在8086模拟器中运行汇编求平均值程序相关推荐

  1. 图解在8086模拟器中运行汇编helloworld程序

    汇编helloworld代码: org 100h; set video mode mov ax, 3 ; text mode 80x25, 16 colors, 8 pages (ah=0, al=3 ...

  2. 07 树莓派裸机编程,并在Windows MSYS2 QEMU模拟器中运行

    作者 将狼才鲸 创建日期 2022-11-14 Gitee源码和工程地址:才鲸嵌入式 / 开源安防摄像机(嵌入式软件) CSDN文章地址:项目介绍:开源安防摄像机(嵌入式软件) 4)完整的环境安装步骤 ...

  3. 计算机表格求和求平均值公式,Word表格中自动求和,求平均值等 公式运算.doc

    文档介绍: EvaluationWarning:ThedocumentwascreatedwithSpire..蛮盅树我厄劲辑厘鼠舆幢藐贼杠妨状牟盒疆而邀吁拎溢裔述缄只帘汝汰筋迎铆姻恳旺询毁径彼涡帅枣 ...

  4. cocoscreator2.4.3构建发布多平台包并在IOS模拟器中运行游戏

    1.打开游戏 vip_kingdown_rush_2 ,点击构建发布,打开Editor Window,选择发布平台与发布路径,如Mac平台,发布路径为工程目录下build文件夹,然后点击构建,可生成M ...

  5. Win系统下用Eclipse中运行远程hadoop MapReduce程序出现Permission denied错误

    Win系统下用Eclipse中运行远程hadoop MapReduce程序出现报错 WARNING: job_local1833185613_0001 org.apache.hadoop.securi ...

  6. windows中运行qt5构建的程序提示 无法启动此程序,因为计算机中丢失qt5Cored.dll 解决方法

    如果在windows中运行qt5构建的程序提示:无法启动此程序,因为计算机中丢失qt5Cored.dll 解决方法如下 1.用release构建项目 2.把缺少的dll文件,从C:\Qt\Qt5.0. ...

  7. 如何在VS Code中运行C或C++程序

    前言 众所周知,VS Code源代码编辑器,是目前最为流行的代码开发工具之一,特别受到Web前端开发者的青睐,当然还有大名鼎鼎的HBuilder X也是非常给力的,我们可以根据自己的需要去选择. 由于 ...

  8. Windows Azure Cloud Service (24) 在模拟器中运行时跳过Windows Azure Startup任务

    <Windows Azure Platform 系列文章目录> 前一章里我们已经介绍了如何使用Windows Azure Startup来执行额外的配置任务,比如注册COM组件和注册Win ...

  9. 04.在android模拟器中运行linux驱动

    驱动编译 makefile obj-m += word_count.o ​ all:make -C /root/goldfish/ M=$(PWD) modules # -C 到 linux kern ...

最新文章

  1. CES上百度无人车队炫技,陆奇要用“China speed”改变世界
  2. 「机器人界的微软」创始人逝世,从iPhone到汽车都离不开他的创造
  3. Android图片处理
  4. shell脚本编程-结构化命令2-for命令
  5. 黑客数字雨html单页,Hei客帝国数字雨.html
  6. php paerser,GitHub - iSinser/sinser-php-sdk: 迅析PHP SDK
  7. Node.js 初步学习总结
  8. 虚拟环境安装python3
  9. 显示器测试软件贴吧,卡硬工具箱怎么检测显示器 屏幕坏点查看教程
  10. cad卸载_3分钟搞定CAD无法卸载问题,CAD卸载不再是烦恼
  11. 由磁场数据和加速度数据计算初始姿态角
  12. jdk8官方下载路径
  13. php qps是什么意思,QPS是什么意思
  14. pos共识机制_共识机制:权益证明机制(POS)
  15. 物流是如何用计算机管理的,物流管理期末复习题
  16. 火星人的耳机(Martian Headsets)
  17. 微信小程序调用update更新数据库数据无效
  18. linux修改密码时候提示太简单了怎么办,linux修改密码
  19. 【PAC集成电机控制芯片】了解PAC集成电机控制芯片
  20. Android Camera驱动分析

热门文章

  1. 自动装配——@Autowired 构造器,参数,方法,属性都是从容器中获取参数组件的值||自定义组件想要使用Spring容器底层的一些组件 ApplicationContext,BeanFactory
  2. Manage Common Field Service Jobs
  3. jQuery 元素操作——遍历元素
  4. PostgreSQL-数据复制
  5. RTC时间在LCD上显示需注意的问题
  6. java 时间轮算法_时间轮算法(TimingWheel)是如何实现的?
  7. UDP实现全双工聊天(聊天工具进阶)pyhton
  8. 第三章:3.7 傅里叶变换性质(一)
  9. compareto方法_Java compareTo() 字符串方法
  10. 【学习笔记】斜率优化