设有两个16位整数变量A和B,试编写完成下述操作的程序。

设有两个16位整数变量A和B,试编写完成下述操作的程序。

(1)若有两个数中一个是奇数,则将奇数存入A中,偶数存入B中。
(2)若两个数均为奇数,则两数分别减1,并存回原变量中。
(3)若两数均为偶数,则两变量不变。
即只需要分成两大类判断即可,①A、B一奇一偶 ②A、B都是奇数或同是偶数;然后,同奇或同偶再进行细分,是同奇还是同偶

汇编思路:首先DATA段定义A、B变量。其次,A赋值给AX,B赋值给BX,使用AX、BX进行参与运算。AX和BX进行异或运算,结果存放到AX中,然后与0001H进行TEXT与运算,判断AX的最后结果,结果为1,则A、B一奇一偶,否则为A、B同奇或同偶。一奇一偶,XCHG交换两数;若同偶,调用4CH结束即可;若同奇,分别减一DEC,然后输出即可。

代码如下:

DATA	SEGMENT
A	DW	?
B	DW	?
DATA	ENDS
CODE	SEGMENTASSUME	CS:CODE,DS:DATA
START:	MOV	AX,DATAMOV	DS,AX
LOP:	MOV	AX,A	;将变量A赋值给通用寄存器AXMOV	BX,B	;将变量B赋值给通用寄存器BXXOR	AX,BX	;异或运算是为了判断A、B是否为一奇一偶、同奇或同偶,若AX最后一位为1,则一奇一偶,否则A、B同奇或同偶TEXT AX,0001H;与运算,只需要判断最后一位是否为1,结果为1,则A、B一奇一偶,否则为A、B同奇或同偶JZ	NEXT	;若最后AX结果为0,即A、B同奇或同偶,跳转NEXT标签处 否则,A、B一奇一偶,执行下条指令TEXT BX,0001H;执行到此条指令,此时A、B一奇一偶已确定,只需要奇数存入A,偶数存入B即可 由于XOR AX,BX此时的AX已经不再存放原来A中内容,但是BX仍存放B的内容,需要判断BX是否为奇数 执行此命令与运算操作,结果若为0,表示BX为偶数,则A为奇数 反之结果为1,BX为奇数,A为偶数JZ	EXIT	;若BX为0,即AX为奇数,BX为偶数,跳转EXIT标签处 否则执行下条指令XCHG BX,A	;执行到此条指令前,此时AX为偶数,BX为奇数,即A存放偶数,B存放奇数,交换A和BX的数据,即A存放BX的奇数,BX存放A的偶数MOV	B,BX	;将BX存放A的偶数赋值给B,最终,A存放奇数,B存放偶数JMP	EXIT	;无条件跳转到EXIT标签处
NEXT:	TEXT BX,0001H;执行到此条指令前,已确定A、B同奇或同偶,由于XOR AX,BX此时的AX已经不再存放原来A中内容,但是BX仍存放B的内容,需要判断BX是否为奇数 执行此命令与运算操作,结果若为0,表示BX为偶数,则A也为偶数,即同偶,否则同奇JZ	EXIT	;若BX为0,即同偶,跳转EXIT标签处 否则执行下条指令DEC	B		;执行到此条指令前,此时A、B同奇,由题目要求需要两数分别减一,并存回原变量中 B减一DEC	A		;A减一
EXIT:	MOV	AH,4CH	;执行到此条指令前,表示AX为奇数,BX为偶数,即A存放奇数,B存放偶数,由题目要求可得,直接输出即可,调用4CH号功能,返回DOS操作系统指令INT 21H		;终止当前程序的运行,并返回DOS系统
CODE	ENDSEND START

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

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

相关文章

棋牌游戏服务器架构: 详细设计(三) 数据库设计

主要有3类Database: ServerInfoDB,UserInfoDB和GameDB。 ServerInfoDB主要存储的是游戏列表的信息,UserInfoDB存储玩家的全局信息,而GameDB就是积分以及积分变化情况。下面分别加以描述。 1. ServerInfoDB ServerInfoDB主要存储游戏列表信息。主要有以下几个表: 1. …

程序开发与性格特征

程序开发与性格特征 引言: 程序员给很多人的印象一般是不善于交际、表情严肃、思维紧密、做事认真、沉着冷静等等。那么这些特征到底和程序开发有没有关系呢?不同性格的人在团队开发当中将面临什么样的问题以及不同性格的人在团队开发中又将发挥着什么样…

汇编语言编写程序从1加到100要求使用循环结构。

汇编语言编写程序从1加到100要求使用循环结构。 汇编思路:AX用于存放每次累加的结果—>09998…0 首先,DATA段中定义SUM用来存放结果和,STACK段定义一个200DB类型空间,用来存放数据。CODE段,AX清0,CX赋值…

c语言指针++_C ++此指针| 查找输出程序| 套装3

c语言指针Program 1: 程序1&#xff1a; #include <iostream>using namespace std;class Test {int VAL;public:Test(int v){VAL v;}Test* Sum(Test T1, Test T2){VAL T1.VAL T2.VAL;return this;}void print(){cout << VAL << " ";}};int mai…

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

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

WPF 操作 richTextBox

FROM:http://blog.csdn.net/wuzhengqing1/article/details/7010902 取出richTextBox里面的内容 第一种方法&#xff1a; 将richTextBox的内容以字符串的形式取出 string xw System.Windows.Markup.XamlWriter.Save(richTextBox.Document); 第二种方法&#xff1a;将richTe…

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

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

已知有几个数据存放在BUF为首址的字节存储区中,试统计其中正数的个数,并将结果存入ZNUM单元中。

已知有几个数据存放在BUF为首址的字节存储区中&#xff0c;试统计其中正数的个数&#xff0c;并将结果存入ZNUM单元中。 P160 例4.17 汇编思路&#xff1a;DATA段&#xff0c;定义BUF存储区&#xff0c;定义一下DB类型的数据&#xff0c;N为定义数据的总个数&#xff0c;ZNUM…

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

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

c语言 typedef_C Typedef-能力倾向问题与解答

c语言 typedefC programming Typedef Aptitude Questions and Answers: In this section you will find C Aptitude Questions and Answers on typedef topics, defining/changing name of any data type, using and accessing the typedef values. C编程Typedef Aptitude问答&…

ios程序 调试log宏的添加

#ifdef DEBUG # define LOG(...) NSLog(__VA_ARGS__) # define LOG_CURRENT_METHOD NSLog("%-%", NSStringFromClass([self class]), NSStringFromSelector(_cmd)) #else # define LOG(...) ; # define LOG_CURRENT_METHOD ; #endif 使用 LOG_CURRENT_METHOD; NS…

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…

编程统计BUF字单元数据中所含1的个数,并将结果存入COUNT单元中。

编程统计BUF字单元数据中所含1的个数&#xff0c;并将结果存入COUNT单元中。 代码如下&#xff1a; DATA SEGMENT BUF DW 2345H ;随机存储一下数据 COUNT DB ? ;用于统计BUF字单元数据中所含1的个数 DATA ENDS STACK SEGMENT STACKDB 100 DUP(?);在堆栈段开辟一段大小为1…

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

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

Java Throwable setStackTrace()方法与示例

Throwable类setStackTrace()方法 (Throwable Class setStackTrace() method) setStackTrace() Method is available in java.lang package. setStackTrace()方法在java.lang包中可用。 setStackTrace() Method is used to sets stack trace elements that will be retrieved by…

IOS中设置全局变量

转&#xff1a;http://blog.csdn.net/totogogo/article/details/7355203 有几种方法 some developers recommend use singleton patter (ref link http://blog.csdn.net/kmyhy/article/details/7026511) 方法1&#xff1a;使用静态变量 (不推荐&#xff09; 方法2&#xff1a; …

设计模式之Observer

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

编写一个程序,计算|X-Y|的值,并将结果存入RESULT单元中,其中X和Y都为带符号字数据。

编写一个程序&#xff0c;计算|X-Y|的值&#xff0c;并将结果存入RESULT单元中&#xff0c;其中X和Y都为带符号字数据。 P154 例4.11 汇编思路:DATA段定义X、Y、RESULE分别用于存放随机数、存放随机数、存放最后计算结果。STACK段定义100DB大小的堆栈段运算存储空间。将AX获取…

java timezone_Java TimeZone inDaylightTime()方法及示例

java timezoneTimeZone类inDaylightTime()方法 (TimeZone Class inDaylightTime() method) inDaylightTime() method is available in java.util package. inDaylightTime()方法在java.util包中可用。 inDaylightTime() method is used to check whether the given date (d) is…

这几天好像博客登不上去 什么情况

这几天好像博客登不上去 什么情况 我多年的心情记录啊 还以为关掉了 。。。。。。。 今天很生气&#xff0c;麻痹 转载于:https://www.cnblogs.com/cloud/archive/2010/04/25/1720744.html