汇编语言(十五)之找出两个数组中的相同元素

找出两个数组中的相同元素,并且输出

程序运行:

 

代码:


datas segmentA         dw  -1,-2, 3, 4, 5, 6, 7, 8, 9, 10,-11, 12, 13, 14, 15ACount    dw  ($-A)/2B         dw  -1, 2,-3, 4,-5, 6,-7, 8, 9,-10, 11,-12, 13,-14, 15,16,17,18,19,0BCount    dw  ($-B)/2C1        dw  30  dup(?)C1Count   dw  0ouputlengthOfC1	   db 'length of C1=$'ouputC1      	   db 0dh,0ah,'the same elemt(C1):$'datas endsstacks segment stackdb  100h dup(?)stacks endscodes segmentassume cs:codes,ds:datas,ss:stacks
main   proc  far
start:push dsmov ax,0hpush axmov ax,datas          ;初始化dsmov ds,axmov cx,ACountmov bx,0              ;数组A的索引mov di,0              ;di数组C1的索引s:   mov ax,A[bx]          ;将数组A的元素移至axcall saveSameElemt    ;保存ax与B中相同的元素add bx,type A         ;数组A的索引移至下一个元素loop sshr di,1                ;di为数组C1的长度mov C1Count,di          ;保存数组C1的长度lea dx,ouputlengthOfC1mov ah,9int 21hmov ax,C1Countcall unsignedPrintlea dx,ouputC1mov ah,9int 21hmov cx,C1Countmov bx,0s1:mov ax,C1[bx]call printmov dl,' 'mov ah,2int 21hadd bx,type C1 loop s1 retmain endpsaveSameElemt proc near;保存寄存器push cxmov cx,BCount          mov si,0                 ;数组B的索引save:cmp ax,B[si]            ;比较ax与数组B的元素jne notEqual             ;若不等,则跳转mov C1[di],ax           ;若相当,则保存于数组C1add di,type C1           ;数组C1下标移至下一个元素notEqual:add si,type B            ;数组B的下标移至下一个元素loop save;恢复寄存器pop cx ret
saveSameElemt endpprint proc near;ax=source;保存寄存器push cx          push dxpush bxcmp ax,0              ; 比较ax与0大小jge notNegative       ;若非0,则跳转push ax               ;若为0,保存axmov dl,'-'            ;输出负号mov ah,2        int 21hpop ax                ;恢复axneg ax                ;取ax的绝对值notNegative:mov bx,10          ;除数mov cx,0           ;计数器,记录十进制数的位数ps:mov dx,0          ;无符号扩展div bx            ;除10push dx           ;保存余数inc cx            ;计数器加1cmp ax,0h         ;比较ax与0大小jnz ps            ;若不等,则跳转ps1:pop dx            ;恢复余数add dl,30h        ;将数字转换为数字字符mov ah,2          ;输出数字字符int 21hloop ps1 ;恢复寄存器pop bxpop dxpop cxret print endpunsignedPrint proc near;ax=source;保存寄存器push cx          push dxpush bxmov bx,10          ;除数mov cx,0           ;计数器,记录十进制数的位数ps:mov dx,0          ;无符号扩展div bx            ;除10push dx           ;保存余数inc cx            ;计数器加1cmp ax,0h         ;比较ax与0大小jnz ps            ;若不等,则跳转ps1:pop dx            ;恢复余数add dl,30h        ;将数字转换为数字字符mov ah,2          ;输出数字字符int 21hloop ps1 ;恢复寄存器pop bxpop dxpop cxret unsignedPrint endpcodes endsend main

 

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

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

相关文章

如何编写更好的SQL查询:终极指南-第一部分

结构化查询语言(SQL)是数据挖掘分析行业不可或缺的一项技能,总的来说,学习这个技能是比较容易的。对于SQL来说,编写查询语句只是第一步,确保查询语句高效并且适合于你的数据库操作工作,才是最重…

汇编语言(十六)之三数值求和

输入A、B、C三个数,如果存在一个数为0,则全部清零,否则求和输出 程序运行: 代码: datas segmentA dw 1B dw 0D dw 3S dw 0a_string db 0ffh, 0 ,100 dup(?)b_string db 0ffh, 0 ,100 dup(?…

回忆四班的那些事儿~

10“大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。”今天,谈谈四班的那些事儿吧~对于四班,回忆满满,根本忘却不了。和别的班一样,一个班内总有那么几个调皮捣蛋的孩子,只是四班…

C#使用Xamarin开发可移植移动应用进阶篇(7.使用布局渲染器,修改默认布局),附源码

本篇..基本可以算是Xamarin在应用开发过程中的核心了..真的很很很重要.. 想学习的..想用的..建议仔细阅读..嗯..打酱油的 ..快速滑倒下面点个推荐 - - 哈哈哈... 今天的学习内容? 也只讲一个,关于Xamarin.Forms针对各个平台如何进行可定制化的布局操作. 也就是针对某个平台…

汇编语言(十七)之判断三个数是否相等

输入三个数,计算相等数的个数 程序运行: 代码: datas segmenta db 0ffh, 0 ,100 dup(?)b db 0ffh, 0 ,100 dup(?)d db 0ffh, 0 ,100 dup(?) ARRAY dw 1,2,2inputA db input a$inputB db 0dh,0ah,i…

你想象中的实习是什么样的?

“大家好,我是雄雄,欢迎关注微信公众号:????雄雄的小课堂????。”今天感谢学长小李同学投稿的文章,在校外实习一年,可谓收获满满,下面就是李心焱同学的实习感悟,请欣赏!实习…

汇编语言(十八)之求两个数的最大公约数

输入两个数,使用辗转相除法求最大公约数 程序运行: 代码: datas segmentM_max_len db 0ffhM_len db 0M_string db 100 dup(?)M dw 0 N_max_len db 0ffhN_len db 0N_string db…

Orleans—一些概念

这个文章聊一聊Orleans的概念.以下文章大部分翻译自官方教程,还有一些结合实际的应用经验,并对以前文章留下的坑进行填平.如果有哪个坑没有填,还请告诉我. Grain的生命周期: 一个Grain在逻辑上是永远存在的,并在逻辑上拥有一个不变的标识.程序的代码永远不会去创造或者销毁一个…

使用jdbc连接mysql数据库代码示例

“大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。”最近,正好在看jdbc,于是就整理了一份增删改查的案例,记录记录,以备后用!!java编辑器:myeclipse![10]…

POJ1958-Strange Towers of Hanoi【递推】

正题 题目链接:http://poj.org/problem?id1958 大意 有4根柱子的汉诺塔,有n个盘,求移动次数 解题思路 首先我们定义只有三根柱子时有n个盘的话移动次数是dndn,然后dndn−1∗21dndn−1∗21定义有四根柱子时有n个盘移动次数为fn…

[上海站] 微软Azure AspNetCore微服务实战

活动介绍 2017官方发布了EshopOnContainers的微服务项目,其结合了.Net Core、Azure、Docker等众多优秀的技术,为开发者们抛砖引玉,走进微服务的大门。 本次分享,我们将结合实际毫无保留的从代码上解析微服务架构,以实…

汇编语言(十九)之删除数组中的元素

在数组中删除所有-1元素,然后输出删除后的长度 程序运行: 代码: datas segmentLink dw 15 ,1,2,3,4,5,6,-9,-1,3,4,5,3,-1,-2,3ouput db Link length:$ datas endsstacks segment stackdb 100h dup(?)stacks endscodes segmentassume cs…

Linux+.NetCore+Nginx搭建集群

本篇和大家分享的是LinuxNetCoreNginx搭建负载集群,对于netcore2.0发布后,我一直在看官网的文档并学习,关注有哪些新增的东西,我,一个从1.0到2.0的跟随者这里只总结一句话:2.0版本,api更多&…

老师 累了,我们 泪了!

“以下文章来自一位不愿意透露姓名的同学所写:”呀呼 “老穆头” 没错是我们的穆老师悄悄往我们班探了探头瞧了瞧我们, 我们依旧对他那么热情,紧随其后老佟往门口一站 教室里立马严肃起来 她是我们级部出了名没人敢惹的老佟(佟老…

汇编语言(二十)之分类统计字符个数

输入一串字符串,分别统计英文字符,数字字符和其他字符的个数 程序运行: 代码: datas segmentline_max_length db 0ffhline db 0, 100h dup(?)letter_count dw 0digit_count dw 0other_count …

.NET Core+Selenium+Github+Travis CI =amp;gt; SiteHistory

前言 总是三分钟热度的我折腾了一个可以每天自动截取指定网站页面并保存到Github的项目SiteHistory,感觉挺好(每次都这样 frameborder"0" scrolling"no" style"border-width: initial; border-style: none; width: 25px; height: 26px;&qu…

汇编语言(二十一)之数值交换与自增

输入两个数,如果第一个数为偶数第二个数为奇数,互换位置;如果两个数都是奇数,则两个数都加一 程序运行: 代码: datas segmentA dw 0 B dw 0a_string db 0ffh, 0 ,100h dup(?)b_string …

2021 程序媛跳槽记:学习计划篇(已收获字节等offer)

今天推荐的这篇文章是一位互联网程序媛写的跳槽日记。她本硕毕业于985计算机专业,先后就职于央企和BAT。这一篇就是她跳槽到互联网的学习笔记,希望能对大家有所帮助,感兴趣的读者也可以关注公众号,听听更多程序媛的故事~ 坦白说&a…

Orleans的集群构建

听闻一周前,微软公布了.net core2.0,以及各种各样的其他core2.0.大家都很兴奋.微妈的诚意真是满满的.这次开源势头让我感觉到了微妈的技术实力之雄厚.我在这里祝福C#越来越好.细心的人似乎发现Orleans在github中是和net core分在一起的.Orleans的2.0何时发布呀… 现在我们面对…

汇编语言(二十二)之统计减去奇数的个数

输入一个正数,该数减去递增奇数(从1开始)直至小于等于零为止,计算该数减去奇数的个数 程序运行: 代码: datas segmentNUM dw 17ANS dw 0NUM_string db 0ffh, 0 ,100 dup(?)inputNUM …