提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 例1:在键盘上输入两个一位数,在屏幕上显示它们的积。(顺序)
    • 代码
  • 例2 :统计DAI字单元中二进制数据中含1的个数,结果存于DA2单元中。
    • 分析:可以利用移位指令,将待判断的字数据一位一位地移到进位位CF中,然后判断CF是1还是0,以此实现对二进制数据中含1的个数统计。
    • 代码
  • 例3 :求两个多字节数之和,这两个数在数据段10050H地址开始的内存单元中连续存放,低位在小地址一端,运算结果放在这两个数之后。设这两个多字节数均为8个字节长
    • 代码
  • 例4 :统计由DATA单元开始的数据块中能被3整除的数的个数。结果存于COUNT单元中。(设数据块中共有10个无符号数)
    • 分析:可以采用除法指令,对待判断的无符号数做除3操作,然后检查余数是否为零,若为零,则该数能被3整除。利用计数控制循环
    • 代码

前言

作为一名在校大学生,我将近期所学的知识进行总结。如有不足,欢迎交流。


例1:在键盘上输入两个一位数,在屏幕上显示它们的积。(顺序)

代码


; You may customize this and other start-up templates;
; The location of this template is c:\emu8086\inc\0_com_template.txtorg 100hMOV AH,1
INT 21H       ;键盘读入1第一个数
MOV BL,AL     ;保存到BLMOV AH,2      ;输出回车
MOV DL,0DH
INT 21H   MOV AH,2      ;输出换行
MOV DL,0AH
INT 21H                MOV AH,1      ;读入第二个数字于AL
INT 21H         SUB AL,30H    ;将读入的ASCALL转化为10进制
SUB BL,30H     MUL BL         ;求得(AL)*(BL)=AX
MOV BL,10      ;将10进制转化回去DIV BL         ;分离出十位和个位
ADD AX,3030H   ;转化为相应的ASCALL码
MOV BX,AX      ;result保存在BXMOV AH,2       ;输出回车
MOV DL,0DH
INT 21HMOV AH,2       ;输出换行
MOV DL,0AH
INT 21HMOV DL,BL      ;输出十位
MOV AH,2
INT 21H          MOV DL,BH      ;输出个位
INT 21H
MOV AH,4CH           ret

例2 :统计DAI字单元中二进制数据中含1的个数,结果存于DA2单元中。

分析:可以利用移位指令,将待判断的字数据一位一位地移到进位位CF中,然后判断CF是1还是0,以此实现对二进制数据中含1的个数统计。

代码

; multi-segment executable file template.data segmentvar1 DW 1234H
var2 DB 0  endscode segment
start:
; set segment registers:mov ax, datamov ds, axmov es, axmov bl,0     ;统计计数器清0mov ax,var1  ;变量1取出给axls:cmp ax,0     ;判断ax是不是等于0 若等于0,则退出je  tuichu   ; SHL ax,1     ;逻辑左移JNC ls       ;cf等于0   统计计数器不需处理,继续判断ADD BL,1     ;cf = 1    BL++jmp lstuichu:mov var2,blmov ax, 4c00h ; exit to operating system.int 21h
endsend start ; set entry point and stop the assembler.

例3 :求两个多字节数之和,这两个数在数据段10050H地址开始的内存单元中连续存放,低位在小地址一端,运算结果放在这两个数之后。设这两个多字节数均为8个字节长

代码

; multi-segment executable file template.data segmentendscode segment
start:
; set segment registers:mov ax, datamov ds, axmov es, ax    ;;;;;;;;;;;;;;;;;;;;;;;;;; mov AX,1000H   mov DS,AX       ;DS=1000HMOV SI,50H      ;第一个数的指针MOV DI,58H      ;第二个数的指针 MOV BX,60H      ;结果指针MOV CX,4        ;循环次数CX=4CLC             ;清空CF AA: MOV AX,[SI]     ;取第一个字到AXADC AX,[DI]     ;AX<- AX+[DI]+CFMOV [BX],AX     ;存一个字到[BX]中PUSHF           ;保护进位 CF       ADD可能影响CFADD SI,2        ;修改第一个数的地址指针ADD DI,2        ;修改第二个数的地址指针ADD BX,2        ;修改结果的地址指针POPF            ;恢复标志寄存器    ADD可能影响CFLOOP AA         ;CX-1,若不为0,转AAHLT             ;CX为0,暂停;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; mov ax, 4c00h ; exit to operating system.int 21h
endsend start ; set entry point and stop the assembler.

例4 :统计由DATA单元开始的数据块中能被3整除的数的个数。结果存于COUNT单元中。(设数据块中共有10个无符号数)

分析:可以采用除法指令,对待判断的无符号数做除3操作,然后检查余数是否为零,若为零,则该数能被3整除。利用计数控制循环

代码

; multi-segment executable file template.data segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
var DB 12,13,14,15,16,17,18,19,21,24
count db 0     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
endsstack segmentdw   128  dup(0)
endscode segment
start:
; set segment registers:mov ax, datamov ds, ax;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;LEA SI,var    ;地址指针SI指向变量var的偏移地址   MOV BL,0      ;统计计数器清0 MOV CX,10     ;循环次数 XH: MOV AL,[SI]   ;取数到ALMOV DL,3      ;除数放到DL寄存器 MOV AH,0      ;高八位补0DIV DL        ;AX/DL  余数在AH寄存器   判断能否被3整除,只需要判断AH=0CMP AH,0      ;若AH=0能被整除   AH!=0,不能被整除 JE  J1        ;统计计数器加1  JMP LX  J1: ADD BL,1;     ;统计计数器加1LX: INC SI        ;指针加1                                                       LOOP XH       ;继续循环 MOV count,BL ;循环结束,存放程序结果                                                          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                                                        mov ax, 4c00h ; exit to operating system.int 21h
endsend start ; set entry point and stop the assembler.

emu8086顺序循环例题(课堂知识)相关推荐

  1. C语言循环选择还有,C语言第五讲,语句 顺序循环选择.(示例代码)

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

  2. C语言第五讲,语句 顺序循环选择.

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

  3. 顺序循环队列队满队空的两种判别方式

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  4. java循环例题while型_Java基础--while、do-while、for循环结构(附例题)

    在日常生活中,我们会重复做某些事情,如将相同的试卷打印三份就需要用到循环结构.在Java中,有三种常用循环结构:while循环.do-while循环.for循环,下面将为读者一一介绍: 1.while ...

  5. c语言中循环并列语句顺序,C语言第五讲,语句 顺序循环选择.

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

  6. 循环神经网络(RNN)知识入门

    循环神经网络(RNN)知识入门 原创:方云 一. RNN的发展历史 1986年,Elman等人提出了用于处理序列数据的循环神经网络(Recurrent Neural Networks).如同卷积神经网 ...

  7. Python编程语言学习:列表与字典互转的几大方法集锦、从列表中按顺序循环抽走一个元素输出剩余元素之详细攻略

    Python编程语言学习:列表与字典互转的几大方法集锦.从列表中按顺序循环抽走一个元素输出剩余元素之详细攻略 目录 列表与字典互转的几大方法集锦 T1.基于两个列表利用zip函数来构造字典 <

  8. 【C语言练习】【指针】定义一个函数move,实现将长度为n、名为a的序列中,各元素依次顺序循环,右移m个位置

    题目 下列函数move的功能是:实现将长度为n.名为a的序列中,各元素依次顺序循环,右移m个位置. 例如:对于序列a=(1,3,5,7,9,11),若m=2,则循环右移后的结果为a=(9,11,1,3 ...

  9. 数据结构之顺序循环队列

    顺序循环队列 思维导图: 队列的定义: 队列的特点 队列的基本操作: 顺序循环队列基本操作的实现: 情况一:rear和front指向同一位置时 队列定义: 队列初始化: 入队: 出队: 队列判空: 返 ...

最新文章

  1. 删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录...
  2. Android stutdio2.2 启动模拟器出现“/dev/kvm is not found.”解决方法
  3. ZOJ Problem Set - 1048 Financial Management
  4. Xcode 真机沙盒
  5. IE9 CSS 因 Mime 类型不匹配而被忽略“问题
  6. g标签 怎么设置svg_SVG g元素
  7. 第一届LCI workshop @ ICCV 2019, 欢迎投稿
  8. 回归返回2个以前标签_大本回归蝙蝠侠,同期将出现2个布鲁斯,网友:可以互相串个门...
  9. Jquery 图片走马灯效果原理
  10. 出场顺序很重要下一句_孩子爱不爱你,出场顺序很重要
  11. javascript之querySelector和querySelectorAll
  12. cad图形如何导入到奥维地图_如何将CAD图导入奥维地图
  13. 一步步学习微软InfoPath2010和SP2010--第十二章节--管理和监控InfoPath Form Services(IPFS)(3)--安装Fiddler并监控IPFS表单加载过程
  14. PDF是什么格式?如何编辑PDF文件?
  15. 奔图3305_奔图 Pantum P3305DN 驱动
  16. Unity 游戏框架搭建 2018 (一) 架构、框架与 QFramework 简介【转自游戏蛮牛】
  17. 设置WDS桥接成功,上不了网怎么办?路由器WDS无线桥接设置正确方法
  18. body与html 会有间隙,css – thead和tbody之间的间距
  19. java 各种编码间转换
  20. 进入docker容器的方法

热门文章

  1. H3C S5120配置SSH认证
  2. USB2.0官方协议手册阅读笔记(1)——总体介绍
  3. 增益可控射频放大器(D 题 本科组)-- 2015 年全国大学生电子设计竞赛试题
  4. 计算机辅助教学出现在哪个时期,2013年1月自学考试小学数学教学论试题
  5. exe文件反编译为源文件
  6. 传统目标跟踪——CamShift算法(改进MeanShift)
  7. quartz的配置详解
  8. 18.深入浅出:信号的转换——参考《模拟电子技术基础》清华大学华成英主讲
  9. win11 win10更新后 鼠标右键新建文本文档(.txt) 快捷方式消失
  10. Java教程之使用Jsoup实现简单的爬虫技术