【匯編語言】除法(DIV/IDIV)

除法(DIV/IDIV)

目錄

      • 除法(DIV/IDIV)
        • `DIV`(unsigned divide)無符號數除法
        • `IDIV`(signed divide)有符號數除法

DIV(unsigned divide)無符號數除法

格式:DIV SRC

操作:

  • SRCSRCSRC為字節時,(AL)←(AX)/(SRC)(AL)\gets (AX)/(SRC)(AL)(AX)/(SRC)的商,(AH)←(AX)/(SRC)(AH)\gets (AX)/(SRC)(AH)(AX)/(SRC)的余數
  • SRCSRCSRC為字時,(AX)←(DX,AX)/(SRC)(AX)\gets (DX,AX)/(SRC)(AX)(DX,AX)/(SRC)的商,(DX)←(DX,AX)/(SRC)(DX)\gets (DX,AX)/(SRC)(DX)(DX,AX)/(SRC)的余數

該指令將參與運算的數據默認為無符號數,則商和余數都是無符號數

除法貌似并不會影響標志位(進位標志CFCFCF和溢出標志OFOFOF)的改變,但通過上述操作可知,被除數位數總是除數的兩倍,而相除的商和余數是存儲在和除數位數相同的空間里,顯然余數是肯定夠存的,但是商是有可能存不下的(例如:0300H÷02H=0180H0300H\div 02H=0180H0300H÷02H=0180H,這里商僅依靠字節存儲是無法存下的)。商出現溢出時,系統轉0號類型中斷處理,提示“divide overflow”,并退出程序,返回到操作系統,程序便已經崩潰了。要想避免出現這種情況,必須在作除法前對溢出作出預判

由于商需要更大空間來存儲,而字節長度的除數無法滿足,因此需要將其擴展為字長度,這樣商便有了字長度空間存儲

MOV AX, 300H
CWD ;這里書上使用CWD指令進行字到雙字的符號擴展(將AX的符號位即最高位填充至DX的所有位),而這里使用的是無符號數除法,當被除數的最高位為1時顯然會擴大被除數的大小,我認為應當使用零擴展(即將DX所有位置0),這樣便不會改變原數的大小,但我未查詢到匯編零擴展的相關指令,或許沒有該指令,也許只能自己手動零擴展(MOV DX, 0)
MOV BX, 2
DIV BX ;這里的SRC為字長

這里使用CWD進行符號擴展是因為SRCSRCSRC為字長時,被除數則為(DX,AX)(DX,AX)(DX,AX),因此需將這兩寄存器一起看作被除數,于是使用CWDDXDXDX置0,使其整體等于300H300H300H,這里個人認為因采用類似MOV DX, 0 的指令去處理更為合理

在這里插入圖片描述

等到的結果商為180H(AX)180H(AX)180H(AX),余數為0H(DX)0H(DX)0H(DX)

IDIV(signed divide)有符號數除法

指令格式和操作與無符號數除法相同,用來作有符號數除法。最終商的符號應是兩個操作數符號的異或,而余數的符號和被除數符號一致

這里用FF80H(?128)÷03H(+3)=D6H(?42)??FEH(?2)FF80H(-128)\div 03H(+3)=D6H(-42)\cdots \cdots FEH(-2)FF80H(?128)÷03H(+3)=D6H(?42)??FEH(?2)舉例

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/380126.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/380126.shtml
英文地址,請注明出處:http://en.pswp.cn/news/380126.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java 方法 示例_Java集合syncedSortedSet()方法與示例

java 方法 示例集合類SynchronizedSortedSet()方法 (Collections Class synchronizedSortedSet() method) synchronizedSortedSet() method is available in java.util package. java.util軟件包中提供了sharedSortedSet ()方法 。 synchronizedSortedSet() method is used to …

遠控免殺專題(17)-Python-Rootkit免殺

免殺能力一覽表 幾點說明: 1、上表中標識 √ 說明相應殺毒軟件未檢測出病毒,也就是代表了Bypass。 2、為了更好的對比效果,大部分測試payload均使用msf的windows/meterperter/reverse_tcp模塊生成。 3、由于本機測試時只是安裝了360全家桶…

項目管理軟件應用淺析(轉)

項目管理是在一定的約束條件下,以高效率地實現項目業主的目標為目的,以項目經理個人負責制為基礎和以項目為獨立實體進行經濟核算,并按照項目內在的邏輯規律進行有效的計劃、組織、協調、控制的系統管理活動。項目管理的核心技術是網絡計劃技…

斜視角的討論(轉)

http://school.ogdev.net/listshow.asp?page4&typeid0&categoryid5&id0&ListType2 目 錄 1.1 地圖和地表 1.2 斜視角游戲中的視角 1.3 Tile圖片的拼接 1.4 不同地表間的過渡 1.5 地圖數據結構的定義 --------------------------------------------------…

計算機網絡(湖科大教書匠)

計算機網絡(湖科大教書匠) 本文檔為教學視頻【計算機網絡微課堂(有字幕無背景音樂版)_嗶哩嗶哩_bilibili】的摘錄 目錄計算機網絡(湖科大教書匠)一、緒論1.2 因特網概述1.2.1 網絡、互連網(互聯…

經緯度

題目描述 給定地球的兩個經緯度坐標,問這兩個點的直線距離。假設地球為球體,半徑為6371009米。 輸入描述: 第一行一個整數T表示數據組數。 接下來n行,每行四個數lat1, lng1, lat2, lng2分別表示兩個點的經緯度。 正數表示北緯和東經。 …

遠控免殺專題(18)-ASWCrypter免殺

免殺能力一覽表 幾點說明: 1、上表中標識 √ 說明相應殺毒軟件未檢測出病毒,也就是代表了Bypass。 2、為了更好的對比效果,大部分測試payload均使用msf的windows/meterperter/reverse_tcp模塊生成。 3、由于本機測試時只是安裝了360全家桶…

Hibernate 筆記4 實現對數據庫的增刪改查

1 準備 首先在mysql數據庫中建表User,并添加相關信息。 user表結構如下。 ---------------------------------------------------------| Field | Type | Null | Key | Default | Extra |------------------------------------------------…

Direct3D中的繪制(3)

立方體——只比三角形稍微復雜一點,這個程序渲染一個線框立方體。 這個簡單的繪制和渲染立方體的程序的運行結果如下圖所示: 源程序: /************************************************************************************** Renders a …

遠控免殺專題(19)-nps_payload免殺

免殺能力一覽表 幾點說明: 1、上表中標識 √ 說明相應殺毒軟件未檢測出病毒,也就是代表了Bypass。 2、為了更好的對比效果,大部分測試payload均使用msf的windows/meterperter/reverse_tcp模塊生成。 3、由于本機測試時只是安裝了360全家桶…

VS2005中使用WebDeploymentProject的問題

近來做Web項目,VS2005中發布網站時默認發布大批的程序集,這給升級網站時造成很大麻煩,所以偶從MS下載了個WebDeploymentProject的插件(下載地址http://download.microsoft.com/download/c/c/b/ccb4877f-55f7-4478-8f16-e41886607a…

操作系統中的多級隊列調度

多級隊列調度 (Multilevel queue scheduling) Every algorithm supports a different class of process but in a generalized system, some process wants to be scheduled using a priority algorithm. While some process wants to remain in the system (interactive proce…

編寫一程序,輸入一個字符串,查找該字符串中是否包含“abc”。

import java.lang.String.*;//這里調用java.long.String.contains()方法; import java.util.Scanner; public class shit {public static void main(String[] args) {Scanner wsq new Scanner(System.in);String str wsq.next();boolean status str.contains(&qu…

顯示消息提示對話框(WebForm)

1: /// <summary>2: /// 顯示消息提示對話框。3: /// Copyright (C) Maticsoft4: /// </summary>5: public class MessageBox6: { 7: private MessageBox()8: { 9: }10: 11: …

借助格式化輸出過canary保護

0x01 canary保護機制 棧溢出保護是一種緩沖區溢出攻擊緩解手段&#xff0c;當函數存在緩沖區溢出攻擊漏洞時&#xff0c;攻擊者可以覆蓋棧上的返回地址來讓shellcode能夠得到執行。當啟用棧保護后&#xff0c;函數開始執行的時候會先往棧里插入cookie信息&#xff0c;當函數真…

什么叫灰度圖

任何顏色都有紅、綠、藍三原色組成&#xff0c;假如原來某點的顏色為RGB(R&#xff0c;G&#xff0c;B)&#xff0c;那么&#xff0c;我們可以通過下面幾種方法&#xff0c;將其轉換為灰度&#xff1a; 1.浮點算法&#xff1a;GrayR*0.3G*0.59B*0.11 2.整數方法&#xff1a;Gra…

各抓包軟件的之間差異_系統軟件和應用程序軟件之間的差異

各抓包軟件的之間差異什么是軟件&#xff1f; (What is Software?) Software is referred to as a set of programs that are designed to perform a well-defined function. A program is a particular sequence of instructions written to solve a particular problem. 軟件…

輸入一字符串,統計其中有多少個單詞(單詞之間用空格分隔)(java)

import java.util.*; class Example3{public static void main(String args[]){Scanner sc new Scanner(System.in);String s sc.nextLine();//這里的sc.nextLine&#xff08;&#xff09;空格也會記數&#xff1b;StringTokenizer st new StringTokenizer(s," ")…

為何苦命干活的人成不了專家?

所謂熟能生巧&#xff0c;但離專家卻有一個巨大的鴻溝&#xff0c;在農田干活的農民怎么也成不了水稻專家&#xff0c;推廣之&#xff0c;那些在本職工作上勤勤懇懇的人&#xff0c;在業務上總有一個不可沖破的瓶頸。 這種現象非常普遍&#xff0c;這就是為什么很多人很勤奮&am…

今天發布一個新網站www.heijidi.com

新網站發布了&#xff0c;歡迎訪問&#xff0c;關于國產機的 網站 www.heijidi.com 轉載于:https://www.cnblogs.com/liugod/archive/2008/03/26/1122753.html