日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Intel汇编程序设计-整数算术指令(下)

發(fā)布時間:2025/6/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Intel汇编程序设计-整数算术指令(下) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

7.5 ?擴展加法和減法

? ? 擴展精度的假發(fā)和減法是指任意尺寸大小數(shù)字的加法和減法。例如要求你寫一個C++程序,把兩個1024位的整數(shù)相加,解決方案可不是那么簡單!但在匯編語言中,ADC(帶進位加)指令和SBB(帶進位減)指令非常適合于解決此類問題。

7.5.1 ?ADC指令

ADCAddWithCarry)指令把源操作數(shù)、目的操作數(shù)以及進位標志相加。指令格式與MOV指令是一樣的:

ADC ?reg ,reg

ADC ?mem ,reg

ADC ?reg ,mem

ADC ?mem ,imm

ADC ?reg ,imm

例如,下面的指令把兩個8位整數(shù)相加(FFh+FFh),16位解雇01FEh被存放在DL:AL中:

mov ?dl ,0

mov ?al ,0FFh

add ??al ,0FFh ??;AL = FE

adc ??dl ,0 ?????;DL = 01

?

兩個32位整數(shù)相加(FFFFFFFFh+FFFFFFFFh)相加,在EDX:EAX中存放64位的和0000001FFFFFFFEh:

mov ?edx ,0

mov ?eax ,0FFFFFFFFh

add ??eax ,0FFFFFFFFh

adc ??edx ,0


7.5.2 ?擴展加法的例子

? ? 下面的Extended_Add過程把兩個任意相同尺寸的整數(shù)相加,程序使用一個循環(huán)把沒對雙字相加,保存進位標志,并是僅為標志參與后面的雙字的假發(fā)運算:

?

? ? 下面摘自ExtAdd.asm的程序片段調(diào)用了Extended_Add過程,例子中傳遞的是兩個64位整數(shù)。注意特別分配了額外的雙字節(jié)以保存可能出現(xiàn)的進位值:

?

果真發(fā)生了進位,注意一個問題,就是比如op1?QWORD 0A2B2A40674981234h

eax ?= ?OFFSET op1

那么[eax] 74981234h ?[eax+4]0A2B2A406。一開始我在最后輸出的時候沒看懂,后臺調(diào)試的時候想起來了。

?

7.5.3 ?SBB指令

? ?SBBsubtract with borrow)指令從墓地操作數(shù)中減去源操作數(shù)和進位標志的值。指令允許你的操作與ADC是相同的。

下面的例子是執(zhí)行64位的減法,把EDX:EAX設(shè)置為0000000100000000h并從中減去1,程序首先減去低32位值,進位標志將被設(shè)置,然后再減去高32位和進位標志值:

mov ?edx ,1 ???;高半部分

mov ?eax ,0 ???;低半部分

sub ??eax , 1 ??;減去1

sbb ??edx ,0 ??;減去1的高半部分(0

EDX:EAX 中的64位差值是00000000FFFFFFFFh

7.6 ?ACCII和未壓縮十進制算術(shù)指令

? ?到現(xiàn)在為止,本書講述的整數(shù)算術(shù)指令都是處理二進制數(shù)值的,盡管CPU是以二進制算術(shù)方式進行運算的,但是也能處理ASCII十進制數(shù)串的算術(shù)運算。后者可以方便地有用戶輸出并在控制臺窗口中顯示,無需轉(zhuǎn)換成二進制數(shù)值。假設(shè)程序需要用戶輸入兩個數(shù)字并把他們相加,下面是一個輸出樣例,其中用書輸入了34021256

???Enter first numbers: ???3402

???Enter second number: ?1256

???The sum is: ??????????4658

在計算和顯示數(shù)字的時候有兩種選擇:

1.把兩個操作數(shù)轉(zhuǎn)換成二進制數(shù)值并相加,然后把和從二進制數(shù)轉(zhuǎn)換成ASCII碼數(shù)字串的格式化后顯示。

2.連續(xù)地把沒對ASCII數(shù)字直接相加,這樣就和是ASCII數(shù)字串,可以直接在屏幕上顯示。

第二種選擇要求在對ASCII數(shù)字相加后使用特殊指令來調(diào)整其和,指令集中有4條指令可以處理這一類的ASCII加法、減法、乘法和除法:


mov ???ah ,0

mov ???al ,’8’?????;AX = 0038h

add ????al,’2’?????;AX = 006Ah

aaa ?????????????;AX = 0100h(結(jié)果的ASCII碼調(diào)整)

or ?????ax ,3030h ;AX = 3130h=’10’(轉(zhuǎn)換成ACSCII)

AAS AAM AAD也是如此。

7.7.1 ?DAA指令

DAA指令把ADDADC指令執(zhí)行后AL中的二進制數(shù)轉(zhuǎn)換成壓縮的十進制數(shù)格式。

mov ?al ,35h

add ?al ,48h ???;AL = 7Dh

daa ???????????;AL = 83h(調(diào)整結(jié)果)

7.7.2 ?DAS指令

DASdecimal adjust after subtraction)指令將SUBSBB指令執(zhí)行后AL中的二進制轉(zhuǎn)換成壓縮的十進制格式。

mov bl ,48h

mov al ,85h

sub al ,bl ??;AL = 3Dh

das ??????;AL = 37h(調(diào)整結(jié)果)

7.8 本章小結(jié)

?

?

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Intel汇编程序设计-整数算术指令(下)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美三级小说 | 亚洲熟女乱色一区二区三区 | 国产亚洲区 | 综合人人 | 精品91久久久 | 国产一级久久久 | 国产三级国产精品 | www插插插 | 9人人澡人人爽人人精品 | 久久久久人妻精品色欧美 | 国产真实偷伦视频 | 女生鸡鸡软件 | 8050午夜二级 | 麻豆av一区二区三区在线观看 | 亚洲色图欧美日韩 | 欧美一级在线免费观看 | 久久综合狠狠综合久久综合88 | 在线观看高清视频 | 欧美在线激情 | 哺乳期喷奶水丰满少妇 | 亚洲国产精品成人综合 | 一及黄色大片 | 亚洲最新在线视频 | 国产亚洲第一页 | 光溜溜视频素材大全美女 | 国产福利在线观看视频 | 东京热无码av一区二区 | 久久免费视频精品 | 91草草草| 午夜在线观看影院 | 天天综合天天综合 | 亚洲无人区小视频 | 中文字幕久久熟女蜜桃 | 精品成人免费视频 | 国产视频一区二区三 | jizz欧美性11| 灌满闺乖女h高h调教尿h | 亚洲视频大全 | 激情五月av | 精品少妇一区二区三区免费观看 | 亚洲v在线| 亚洲a精品 | 少妇一级淫片日本 | 国产成人在线一区 | 国产美女自拍 | 娇小6一8小毛片 | 天天做天天爱天天爽综合网 | 国精产品一区二区三区 | 暖暖av在线 | 亚洲喷潮| 最新毛片网站 | 激情五月开心婷婷 | 香蕉视频在线免费播放 | 高潮疯狂过瘾粗话对白 | av手机网| 91theporn国产在线观看 | 玖玖玖视频 | 国产精品亚洲一区二区 | 色汉综合 | 国产福利在线视频观看 | 精品一区二区三区免费看 | 国产第页| 色女仆影院 | 少妇精品无码一区二区免费视频 | 午夜av网| 91情侣在线 | 伊人久久大香线 | 91精品综合久久久久久 | 午夜中文字幕 | 青青草综合网 | 极品久久久久 | 国产suv精品一区二区三区 | 在线观看亚洲免费视频 | 亚洲第一成年网 | av资源网在线观看 | 悠悠色在线 | 色人阁视频 | 欧美激情一区二区 | 精品国产伦一区 | 久久久高清 | 国产精品一区二区三区免费视频 | 欧美一级录像 | 欧美精品一区二区视频 | 精品一区二区三区四 | 最新视频–x99av | 色七七桃花影院 | 青青操在线观看 | 精品国偷自产一区二区三区 | 91美女网站 | 亚洲喷水 | 热久久最新网址 | 亚洲国产精品久久 | 国产看黄网站 | 欧美三级黄 | 不卡的中文字幕 | 欧美成人不卡 | 亚洲狠狠婷婷综合久久久久图片 | 潮喷失禁大喷水无码 | 久久国产亚洲 |