编写一个程序,实现将存放在AX和DX中的32位数据循环右移二进制数的4位。(DX存放高字节内容,AX存放低字节内容)

编写一个程序,实现将存放在AX和DX中的32位数据循环右移二进制数的4位。(DX存放高字节内容,AX存放低字节内容)

P151
例4.9

汇编思路:

AX右移四位后,使用BH接收AL的低四位数据,得到BH的八位数据,循环左移四位,将原先AL中的低四位放到BH的高四位中,最后结果,BH的高四位存放AX的低四位,BH的低四位存放0000H
DX右移四位后,使用BL接收DL的低四位数据,得到BL的八位数据,循环左移四位,将原先DL中的低四位放到BL的高四位中,最后结果,BL的高四位存放DX的低四位,BL的低四位存放0000H

详细过程:这里的CL用来移动位数,即移动4位二进制数据。首先因为AX存放低字节内容,所以循环右移4位之后AL中的低四位会被移除,此时需要使用BH接收AL的低四位数据,但是由于BH和AL存放的都是八位二进制数,所以将AL值赋给BH之后,BH再进行左移只保留AL中的第四位即可,最后,BH的高四位存放AL的低四位,BH的低四位存放0000H。BH的高四位存放AX中的低四位数据,之后AX开始循环右移四位二进制数。
接着,BL存放DL中的低四位数据,DX开始循环右移四位二进制数,BL的低四位存放原先DX的低四位,然后,BL左移四位,即BL的高四位为原先DX的低四位,BL的低四位为0000H。
由于AX已经循环右移了四位,AH的高四位为0000H,AH的低四位存放原先AH的高四位,而且BL高四位存放的是原先DX的低四位,BL的低四位为0000H,AH和BL求或运算,即将BL存放的高四位数据,即DX的低四位,传递给AH的高四位,即AX的高四位。
同样,由于DX已经循环右移了四位,DH的高四位为0000H,DH的低四位存放原先DH的高四位,BH的高四位存放原AX中的低四位,DH和BH求或运算,BH的高四位传递给DH的高四位,DH的低四位存放原DH的高四位。

代码和具体存储器中数值如下:

CODE SEGMENT			;		DX,5678H  AX,1234HASSUME CS:CODE	;			XH 		 XL
START:  MOV AX,1234H	;		0001 0010 0011 0100  AXMOV DX,5678H	;		0101 0110 0111 1000  DXMOV CL,04		;		          0000 0100  CLMOV BH,AL		;		0011 0100			 BH  BH获取AX循环右移四位即将丢失的低四位数据SHL BH,CL		;		0100 0000			 BH  BH左移四位,将AX失去的低四位放置到BH的高四位处,此时BH高四位为AX原先的低四位,BH的低四位为0000HSHR AX,CL		;		0000 0001 0010 0011  AX  BH接收AX的低四位,AX开始循环右移四位MOV BL,DL		;				  0111 1000  BL  BL接收DX的低四位SHR DX,CL		;		0000 0101 0110 0111  DX  BL接收DX的低四位,DX开始循环右移四位SHL BL,CL		;				  1000 0000  BL  BL左移四位,将DX的低四位放置到BL的高四位处,此时BL高四位为DX原先的低四位,BL的低四位为0000HOR AH,BL		;		1000 0001			 AX  AH高四位存放0000H,低四位存放原AX的高四位  BL高四位存放原DX的低四位,BL的低四位为0000H  或运算结束后,AX的AH高四位存放原DX的低四位,AH低四位存放原AX的高四位OR DH,BH		;		0100 0101			 DH  DH高四位存放0000H,低四位存放原DX的高四位  BH高四位存放原AX的低四位,BH的低四位为0000H  或运算结束后,DX的DH高四位存放原AX的低四位,DH低四位存放原DX的高四位MOV AH,4CH		;		0100 0101 0110 0111  DXINT 21H			;		1000 0001 0010 0011  AX
CODE ENDS				;		DX,4567H  END START		;		AX,8123H

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#中textbox属性_C#.Net中的TextBox.Visible属性与示例

c#中textbox属性Here we are demonstrating use of Visible property of TextBox Control. 在这里,我们演示了TextBox Control的Visible属性的使用。 Visible property contains two values 可见属性包含两个值 True: Using this - textbox can be visible on par…

.net 笔记尝试(二)

.NET笔试题集(二) 1.using关键字有什么用?什么是IDisposable? using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,using结束后会自动调用该对象的…

网上照片之博客照片与网店照片拍摄心得

本文选自《非常摄影手记:2天玩转单反相机》一书 让照片在博客上更热的心得 1.有时美好的不仅是照片,还有拍摄照片的过程。尽量真实全面地记录自己的摄影过程,展示最感人的自我。 2.不要急功近利,不想成“名博”的博主不是好博主&a…

c语言getc函数_C语言中的getc()函数与示例

c语言getc函数C语言中的getc()函数 (getc() function in C) Prototype: 原型: int getc(FILE *filename);Parameters: 参数: FILE *filenameReturn type: int 返回类型: int Use of function: 使用功能: In the file handling…

《深入浅出WPF》笔记——绑定篇(一)

上一节,有记录写到:在WPF里,数据驱动UI,数据占核心地位,UI次之。怎么恢复数据的核心地位,那就要先了解一下Binding。 一、Binding 基础 1.1WPF中Data Binding的带来的方便 在设计架构的时间,大家…

c语言feof函数_使用示例的C语言中的feof()函数

c语言feof函数C语言中的feof()函数 (feof() function in C) Prototype: 原型: int feof(FILE* filename);Parameters: 参数: FILE *filenameReturn type: int(0 or 1) 返回类型: int(0或1) Use of function: 使用功能: In C l…

5种经典排序算法,每个程序员都应该知道

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情 有没有想过当您应用从低到高、从高到低或按字母顺序等过滤器时,亚马逊或任何其他电子商务网站中的产品如何排序?排序算法对于此类网站起着至…

在Python中使用OpenCV(CV2)对图像进行边缘检测

Modules used: 使用的模块: For this, we will use the opencv-python module which provides us various functions to work on images. 为此,我们将使用opencv-python模块,该模块为我们提供了处理图像的各种功能。 Download opencv-pytho…

微机原理与接口技术(第2版)考点

第一章 1,微型计算机的特点: 功能强、可靠性高价格低廉系统设计灵活,适应性强体积小,重量轻,维护方便 2,微型计算机的硬件组成 微处理器内存储器I/O接口电路I/O设备系统总线 3,微机的工作过…

UltraEdit语法高亮

语法加亮分支位于配置-编辑器显示之下,允许用户配置语法加亮选项:语法加亮可以识别预定词语,并用不同颜色显示它们。该功能对于程序员来说尤其有用,并且对那些想用不同颜色显示文档中词语的用户也非常有用。提供二十种…

顺序表(代码、分析、汇编)

目录:代码:分析:汇编:代码: SeqList.h #ifndef _SEQLIST_H_ #define _SEQLIST_H_ typedef void SeqList; //定义链表数据类型,void因为要适用不同链表数据类型 typedef void SeqListNode; //定义链表节…

线性表(代码、分析、汇编)

目录:代码:分析:汇编:代码: LinkList.h #ifndef _LINKLIST_H_ #define _LINKLIST_H_typedef void LinkList; //定义线性表类型 typedef struct _tag_LinkListNode LinkListNode;//定义线性表节点类型 struct _tag_Li…

微软企业库4.1学习笔记(八)创建对象 续集2

3.3通过配置指定和Unity的整合 另外一种方法是在配置源中指定配置的需要,你可以指定下面的一条或者多条: 你可以在Unity配置中指定想要的BlockExtensions  你可以在Unity配置中的type配置节指定如何创建企业库对象,指定类型映射的关系&…

静态链表(代码、分析、汇编)

目录:代码:分析:汇编:代码: StaticList.h #ifndef _STATICLIST_H_ #define _STATICLIST_H_typedef void StaticList; //空类型静态表类型可以接收任何类型的静态表类型 typedef void StaticListNode;//空类型节点类型…

Python的线程池实现

代码 1 #coding:utf-82 3 #Python的线程池实现4 5 importQueue6 importthreading7 importsys8 importtime9 importurllib10 11 #替我们工作的线程池中的线程12 classMyThread(threading.Thread):13 def__init__(self, workQueue, resultQueue,timeout30, **kwargs):14 threadin…

循环链表(代码、分析、汇编)

目录:代码:分析:汇编:代码: CircleList.h #ifndef _CIRCLELIST_H_ #define _CIRCLELIST_H_typedef void CircleList;typedef struct _tag_CircleListNode CircleListNode;struct _tag_CircleListNode{CircleListNode…

设计模式之Observer

观察者模式可以参考邮件订阅的例子 邮件订阅设计到2个主要角色,一个是订阅者(观察者),一个是发布者 发布者可以拥有一个观察者的集合,可以添加,删除观察者,当发布者发布一个新的消息时,要邮件通知观察者集合…

双向链表(代码、分析、汇编)

目录:代码:分析:汇编:代码: DLinkList.h #ifndef _DLINKLIST_H_ #define _DLINKLIST_H_typedef void DLinkList; typedef struct _tag_DLinkListNode DLinkListNode; struct _tag_DLinkListNode {DLinkListNode* nex…

变量和简单数据类型(一)

1,title()方法 将字符串中的每个单词的首字符大写 2,upper()方法 将字符串的所有字母大写 3,lower()方法 将字符串的所有字母小写 name "beyond Sq" print(name.title()) print(name.upper()) print(name.lower())调用方式&…

VS2010安装、启动都挺快的,真不错

截图留念,里面的源码是《把脉VC》一书的示例工程。 转载于:https://www.cnblogs.com/silentmj/archive/2010/04/29/1723940.html