第十章實驗10 2

2021-06-20 08:07:18 字數 1430 閱讀 7426

本實驗要實現32位除法結果不溢位(被除數32位,除數16位)

assume cs:code

code segment

start :

mov ax , 4240h                            //引數1:被除數的低16位,放入ax

mov dx , 000fh                           //引數2:被除數的高16位,放入dx

mov cx , 0ah                               //引數3: 除數,放入cx

call divdw                                    //呼叫函式 divdw,傳入引數1,2,3

mov ax , 4c00h

int 21h

divdw:                                              //32位不溢位除法函式,函式中用到的區域性變數儲存在bx,si中,所以要先儲存bx,si的原始值

push bx

push si

mov bx , ax                             //將被除數的低16位儲存到區域性變數

mov ax , dx                            //將被除數高位移到低位

sub dx , dx                            //被除數高位清0

div cx                                    //呼叫div指令進行32位除法運算,這個結果不會溢位,因為被除數的高16位現在為0

mov si , ax                         //div的商儲存在ax,因為接下來還要進行一次div,所以把這個商儲存的區域性變數,這個值實際上構成最終的商的高16位

mov ax , bx                        //將原被除數的低16位還原到ax中

div cx                                 //再次進行div呼叫,這回dx中儲存的是第一次div後的餘數,dx現在一定小於除數,所以這回的除法也不會溢位

mov cx , dx                       //第二次div的餘數構成最終的餘數,儲存到cx

mov dx , si                       //最終的商的高位從區域性變數還原回來,而最終的商的低16位就是第二次div的商,正好儲存在ax中,不用改變

pop si

pop bx

ret                                //函式返回

第十章實驗10 3

本實驗要將十進位制數字,以ascii碼的形式顯示到螢幕上 assume cs code data segment db 10 dup 0 存放要寫到螢幕上的數字的記憶體段 data ends code segment start mov ax 17897 將十進位制數字17897顯示到螢幕上 mov...

第十章 函式

使用def關鍵字 定義個數可變的位置形參 定義個數可變的關鍵字形參 定義預設值引數 定義個數可變的位置形參 deffun1 args 結果為乙個元組 print args fun1 10,20,30 10,20,30 定義個數可變的關鍵字形參 deffun2 args 結果為乙個字典 print a...

第十章 屬性

z屬性 本章也比較簡單稍作介紹 無參屬性就是我們常見的屬性 可以封裝屬性 以執行緒安全方式訪問 有參屬性就是c 中的所引器 匿名型別 如圖遇到如下 具體點就是 上面的注釋也已經講清楚了,定義的型別之後,構造例項,然後初始化屬性。現在詳細說下 編譯器接收到 上圖 先用var 定義乙個型別,但是不具體指...