求助:双精度右移指令SHRD的疑问

hkbyest 2007-07-20 03:40:50
shrd: 双精度右移指令,只能在80386以上处理器使用,将目的操作数向右移动相应位数,空出来的位由源操作数的低位填充。

格式: shrd 目的操作数,源操作数,移位位数
指令不改变源操作数,源操作数必须为寄存器。


例:
mov ax,1234h
mov bx,5678h
shrd ax,bx,16 ;ax=5678h

mov eax,12345678h
mov ebx,87654321h
shrd eax,ebx,32 ;eax=12345678h,右移8字节,eax不变,
shrd eax,ebx,28 ;eax=76543211h,右移7字节还是可以的。

为什么都是双精度右移,16位寄存器完全移位就可以,而32位寄存器完全移位就不行了呢?请指教
...全文
659 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
czlyc006 2007-07-21
  • 打赏
  • 举报
回复
这道题目可以有很多种理解,我的理解是,使用shrd将一个由5个32位元素构成的数组整体右移一位,故而按在内存中存放的地址由高到低移动每个双字。

高地址的双字右移后高位的空缺由低地址双字的低位填充,故而位于最低地址的数组元素(也就是数组首元素)没有相应的双字填充其右移后高位的空缺,所以只需使用 shr DWORD PTR [esi],1 将其简单逻辑移位即可。

整个程序的思路源于书P179 7.3.1小节
hkbyest 2007-07-20
  • 打赏
  • 举报
回复
to czlyc006(流浪的疾风):

是的,回头复习一下,原来没有自己的电脑上机操作,光看不练不行的。

我是为了写过程啦,任意个数dword数组的任意循环移位,差不多写好了。哎,不能移32位真是麻烦。

你上面的代码中:
shr DWORD PTR [esi],1 ;这句把最后的dword再右移一位有什么作用呢?

还有我运行了一下上面的代码,好像结果不太正确呢。

czlyc006 2007-07-20
  • 打赏
  • 举报
回复
题目要求用shrd移5个32位数呢
----------------------------
《Intel 汇编语言程序设计》的课后习题?

TITLE bit_trip2
INCLUDE irvine32.inc

.data
array DWORD 99999999h,99999999h,99999999h,99999999h,99999999h

.code
main PROC

mov esi,OFFSET array
mov ecx,(LENGTHOF array)-1
push esi
push ecx

top:
mov eax,[esi+4]
shrd DWORD PTR[esi],eax,1
add esi,4
loop top
shr DWORD PTR [esi],1

pop ecx
inc ecx
pop esi
mov ebx,TYPE array
call dumpmem

exit

main ENDP
END main
hkbyest 2007-07-20
  • 打赏
  • 举报
回复
噢,原来如此。

哎,题目要求用shrd移5个32位数呢,难道要用word ptr []+4来替换才得?
  • 打赏
  • 举报
回复
因为shrd的移位数是做了mod 32限制的,移32位就是移0位。
而移16位是没有问题的。
⼈⼯智能的发展历史概览 进⼊新世纪以来,⼈⼯智能在经历了⼀次史上最长停滞期之后,终于⼜⼀次迎来了它的时代。⼀次真正属于它的时代。 在本⽂,我将带领⼤家领略⼀下⼈⼯智能在历史上的发展历程,从宏观上对⼈⼯智能有⼀个⼤体的认识,跟上时代发展的步伐。 ⼈⼯智能的提出 ⼈⼯智能是在1956年作为⼀门新兴学科的名称正式提出的,⾃此之后,尽管有⼀些⼤起⼤落,但是到现在,它已经获得了迅速的发展,并 且正在改变⼈类的社会的⽅⽅⾯⾯。 1956-1969年是⼈⼯智能这个概念的提出和形成阶段。1956年夏季,由当时达特茅斯⼤学的年轻数学助教、现任斯坦福⼤学教授麦卡锡 (J. MeCarthy)联合哈佛⼤学年轻数学和神经学家、⿇省理⼯学院教授明斯基(M. L. Minsky),IBM公司信息研究中⼼负责⼈洛切斯特(N. Rochester),贝尔实验室信息部数学研究员⾹农(C. E. Shannon)共同发起,邀请普林斯顿⼤学的莫尔(T.Moore)和IBM公司的塞缪尔(A. L. Samuel)、⿇省理⼯学院的塞尔夫⾥奇(O. Selfridge)和索罗莫夫(R. Solomonff)以及兰德(RAND)公司和卡内基梅隆⼤学的纽厄尔(A. Newell)、西蒙(H. A. Simon)等在美国达特茅斯⼤学召开了⼀次为时两个⽉的学术研讨会,讨论关于机器智能的问题。会上经麦卡锡提议正 式采⽤了"⼈⼯智能"这⼀术语。麦卡锡因⽽被称为⼈⼯智能之⽗。这是⼀次具有历史意义的重要会议,它标志着⼈⼯智能作为⼀门新兴学 科正式诞⽣了。此后,美国形成了多个⼈⼯智能研究组织,如纽厄尔和西蒙的Carnegie-RAND协作组,明斯基和麦卡锡的MIT研究组,塞 缪尔的IBM⼯程研究组等。 ⾃这次会议之后的10多年间,⼈⼯智能的研究在机器学习、定理证明、模式识别、问题求解、专家系统及⼈⼯智能语⾔等⽅⾯都取得了许 多引⼈注⽬的成就。 ⼈⼯智能在20世纪50年代的标志性事件 1950年: Alan Turing发表了"计算机器和智能",提出了模仿游戏的想法 - ⼀个考虑机器是否可以思考的问题。这⼀建议后来成为 的 图灵测试,其测量机(⼈⼯)智能。图灵的发展测试了机器的思考能⼒。图灵测试成为⼈⼯智能哲学的重要组成部分,⼈⼯智能在 机器中讨论智能,意识和能⼒。 [外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-DwDwmVCL-1621223626041)(en- resource://database/31285:1)] 1952年:计算机科学家亚瑟·塞缪尔(Arthur Samuel)开发了⼀种跳棋计算机程序 - 第⼀个独⽴学习如何玩游戏的⼈。 1955年:约翰麦卡锡和⼀群⼈创建了⼀个关于"⼈⼯智能"研讨会的提案。1956年,当研讨会举⾏时,这个词的正式诞⽣归功于麦 卡锡。 1955年: Allen Newell(研究员),Herbert Simon(经济学家)和Cliff Shaw(程序员)共同撰写了第⼀个⼈⼯智能计算机程序 逻辑理论家。 1958年: McCarthy开发了Lisp,这是⼈⼯智能研究中最受欢迎且最受青睐的编程语⾔。 1959年:塞缪尔在谈到编程计算机以⽐编写程序的⼈更好地进⾏国际象棋游戏时创造了"机器学习"⼀词。 ⼈⼯智能在20世纪60年代的标志性事件 1961年: 乔治·德沃尔(George Devol)在20世纪50年代发明的⼯业机器⼈Unimate成为第⼀个在新泽西州通⽤汽车装配线上⼯ 作的机器⼈。它的职责包括从装配线运输压铸件并将零件焊接到汽车上 - 这⼀任务对⼈类来说是危险的。 1961年:计算机科学家兼教授James Slagle开发了SAINT(符号⾃动INTegrator),这是⼀个启发式问题解决⽅案,其重点是新⽣ 微积分中的符号整合。 1964年:计算机科学家Daniel Bobrow创建了STUDENT,⼀个⽤Lisp编写的早期AI程序,解决了代数词问题。学⽣被认为是⼈⼯智 能⾃然语⾔处理的早期⾥程碑。 1965年:计算机科学家兼教授Joseph Weizenbaum开发了ELIZA,这是⼀个交互式计算机程序,可以⽤英语在功能上与英语交谈。 Weizenbaum的⽬标是证明⼈⼯智能思维与⼈类思维之间的沟通是"肤浅的",但发现许多⼈将拟⼈化特征归因于伊丽莎。 1968年:由Stanley Kubrick执导的科幻电影2001:A Space Odyssey发⾏。它具有HAL(启发式编程的算法计算机),⼀个有 感知的计算机。HAL控制航天器的系统并与船员交互,与他们交谈,好像HAL是⼈,直到故障以负⾯⽅式改变HAL的相互作⽤。 1968年:计算机科学教授Terry Winograd创建了早期⾃然语⾔计算机程序SHRD
XC7Z020CLG484 XILINX FPGA开发板ALTIUM原理图+PCB【12层】工程文件, 板子大小为121*119mm,12层板设计,可以做为你的学习设计参考,主要器件如下: Library Component Count : 70 Name Description ---------------------------------------------------------------------------------------------------- AND_Gate_TI_SN74AUP1T08DCKRIC GATE POS-AND SLG 2INP SC70-5 Balun_AnarenB0322J5050AHFUltra Low Profile 0805 Balun, 50 ohm unbalanced to 50 Balanced BarrelJack CONN PWR JACK 0.8X3.35MM SMT Buffer_74LCX126 74LCX126BQX, quad buffer, LV N-Inv, DQFN14 Buffer_Fairchild_NC7SZ125NC7SZ125M5X, Tri-State Buffer UHS, SOT-23 Buffer_Fairchild_NCWZ07NC7WZ07, dual non-inverting buffer, SC-70-6 (SOT-363) Bus_Repeat_TI_PCA9515APWRIC DUAL BIDIR BUS REPEAT 8-TSSOP CAP_0201 Generic Capacitor CAP_0402 10000pF, ceramic, 10% 6.3V X5R, 0402 CAP_0603 4.7uF, ceramic, 10% 6.3V X5R Low ESR, 0603 CAP_0805 22uF, ceramic, 20%, 6.3V, X5R, 0805 CAP_1206 CAP CER 100UF 6.3V 20% X5R 1206 CAP_1210 22uF, ceramic, 20% 25V X7R, 1210 COM-UART-FT4232H-QFN64IC USB HS QUAD UART/SYNC 64-QFN Cap Pol1 100uF, tantalum, 20% 10V, 1210 DDR3_MICRON_MT41J128M16HA-15EDMT41J128M16HA-15E:D, DDR3 SDRAM 4Gb x4, x8, x16, FBGA96 Diode DIODE 30V 1A SMINI2 EEPROM_Microchip_93LC56BT_IOT93LC56BT-I/OT, EEPROM 2Kbit 3MHz, SOT23-6 EthernetPHY_TI_DP83865DVHEthernet PHY_TI_DP83865DVH, Gigabit Ethernet PHYTER,128 Lead Plastic Flat Pack FerriteBead Ferrite 300mA 600ohm 0402 FerriteBead0805 MPZ2012S601A, 600 ohm, 100MHz, 0805 Fiducial GPSReceiver_Skyworks_SE4110LHigh sensitivity / low power GPS and A-GPS,10 mA operating current with 2.7-3.3 V supply GigabitTransformer_H6062NLTMagnetics, GigabitTransformer, H6062NLT, Pulse Header-2_milmax CONN HEADER 2POS .100" HORIZ SMD Header-6_PMOD CONN FEMALE 6POS .100" R/A TIN Header-8_PoE CONN HEADER 8POS DUAL SHRD SMD Header_Harwin_M50-3600842CONN HDR 1.27MM SMD AU 16POS INDUCTOR INDUCTOR, 1
You are visitor as of October 17, 1996.The Art of Assembly Language ProgrammingForward Why Would Anyone Learn This Stuff?1 What's Wrong With Assembly Language2 What's Right With Assembly Language?3 Organization of This Text and Pedagogical Concerns4 Obtaining Program Source Listings and Other Materials in This TextSection One: Machine OrganizationArt of Assembly Language: Chapter OneChapter One - Data Representation1.0 - Chapter Overview1.1 - Numbering Systems1.1.1 - A Review of the Decimal System1.1.2 - The Binary Numbering System1.1.3 - Binary Formats1.2 - Data Organization1.2.1 - Bits1.2.2 - Nibbles1.2.3 - Bytes1.2.4 - Words1.2.5 - Double Words1.3 - The Hexadecimal Numbering System1.4 - Arithmetic Operations on Binary and Hexadecimal Numbers1.5 - Logical Operations on Bits1.6 - Logical Operations on Binary Numbers and Bit Strings1.7 - Signed and Unsigned Numbers1.8 - Sign and Zero Extension1.9 - Shifts and Rotates1.10 - Bit Fields and Packed Data1.11 - The ASCII Character Set1.12 Summary1.13 Laboratory Exercises1.13.1 Installing the Software1.13.2 Data Conversion Exercises1.13.3 Logical Operations Exercises1.13.4 Sign and Zero Extension Exercises1.13.5 Packed Data Exercises1.14 Questions1.15 Programming ProjectsChapter Two - Boolean Algebra2.0 - Chapter Overview2.1 - Boolean Algebra2.2 - Boolean Functions and Truth Tables2.3 - Algebraic Manipulation of Boolean Expressions2.4 - Canonical Forms2.5 - Simplification of Boolean Functions2.6 - What Does This Have To Do With Computers, Anyway?2.6.1 - Correspondence Between Electronic Circuits and Boolean Functions2.6.2 - Combinatorial Circuits2.6.3 - Sequential and Clocked Logic2.7 - Okay, What Does It Have To Do With Programming, Then?2.8 - Generic Boolean Functions2.9 Laboratory Exercises<
MSL 即 Microsoft Library 是 DOS 版的 "WinHelp",也就是现代版 Help Viewer 的始祖。 安装目录下有个 ini 文件,用来指定图书的路径,它即是目录。 文件来源自 http://wdl2.winworldpc.com/Abandonware%20SDKs/Microsoft Programmer's Library 1.3.7z Microsoft Programmer's Library 1.3.iso 这就是 DOS 版的 MSDN!使用 DOSBOX 就可以运行此库。此库含一大古董级MS官方编程参考材料,主要针对 Windows 3.0 平台,真可谓之应用尽有: MS Windows 3.0 SDK Guide to Programming MS Windows 3.0 SDK Install. & Update Guide MS Windows 3.0 SDK Programmer's Reference Vol. 1 MS Windows 3.0 SDK Programmer's Reference Vol. 2 MS Windows 3.0 SDK Tools MS Windows 3.0 SDK Articles All MS Windows 3.0 SDK Manuals MS Windows 3.0 DDK Install. & Update Guide MS Windows 3.0 DDK Adaptation Guide MS Windows 3.0 DDK Virtual Device Adapt. Guide MS Windows 3.0 DDK Printer & Font Kit All MS Windows 3.0 DDK Manuals MS Online User's Guide Programming MS Windows MS Windows Sample Code MS KnowledgeBase - MS Windows 以及 Options => Library 菜单下提供的 9 个重要的参考资料,其中就有 C 和 MASM 这些重要的参考资料。这些是已安装的目录部分,鉴于 MASM 的重要性,特将其添加到压缩包内,免CD运行: Windows References OS/S References Network References MS-DOS References MS Systems Journal Hardware References C References MASM References BASIC References Pascal References FORTUAN References 其中 C References 和 MASM References 包含: Installing and Using MS MASM 6.0 MS MASM 6.0 Reference MS MASM 6.0 Programmer's Guide MS MASM 6.0 White Paper QuickAssembler 2.01 Programmer's Guide MS Mixed-Language Programming Guide CodeView & Utilities User's Guide MS Editor User's Guide MS OnLine User's Guide MASM Sample Code MS KnowledgeBase - MASM MS C 6.0 Advanced Programming Techniques MS C 6.0 Installing and Using the P.D.S. MS C 6.0 Reference MS C 6.0 Run-Time Library Reference MS C 6.0 Developer's Toolkit Reference QuickC 2.5 Tool Kit QuickC 2.5 C for Yourself QuickC 2.5 Up and Running QuickC 2.5 Update MS Professional

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧