第十章實驗10 3

2021-06-20 08:10:29 字數 2435 閱讀 2566

本實驗要將十進位制數字,以ascii碼的形式顯示到螢幕上

assume cs:code

data segment

db 10 dup (0)                         //存放要寫到螢幕上的數字的記憶體段

data ends

code segment

start:

mov ax , 17897             //將十進位制數字17897顯示到螢幕上

mov bx , data

mov ds , bx

mov si , 0

call dtoc                       //呼叫函式dtoc ,將數字寫入記憶體,注意是寫入數字對於的字元的值,比如數字1,則寫入31h,對於字元'1',最終構成字串"17897",以0結尾

mov dh , 8

mov dl , 3

mov cl , 2

call show_str            //呼叫show_str函式,將已經寫入記憶體中的字串"17897」顯示到螢幕的第8行,第3列,綠色字型

mov ax , 4c00h

int 21h

dtoc:                             //該函式能完成32位數字轉化為字串

push si

push bx

mov bx , 0

push bx                  //先push乙個0到棧中,作為出棧時候的標誌位

cal:

mov cx , 0ah         //將除數10放入cx,把數字轉為十進位制字串的演算法就是不斷除10,將餘數入棧,知道商為0

call divdw              //呼叫divdw函式,不用div指令是因為要確保能顯示32位的數字都能成功轉化

add cx , 30h        //這裡加上30h,就是將數字1轉化為ascii字元 '1'

push cx                 //將餘數入棧

jmp short testax         //判斷此時商是否為0,注意現在商的高16位在dx,低16位在ax,只有ax和dx都為0,商才真正為0,所以下面有兩個檢測,分別檢測ax和dx

testax:

mov cx , ax

jcxz  testdx

jmp short cal

testdx:

mov cx , dx

jcxz ook

jmp short cal

ook:                        

pop cx              //開是出棧,將字元寫入data段記憶體中

jcxz over

mov [si] , cl

inc si

jmp short ook

over:

mov byte ptr [si] , 0                 //給字串的結尾增加乙個0作為字串結束的標誌位

pop bx

pop si

retshow_str:                       //呼叫函式顯示字串

第十章實驗10 2

本實驗要實現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 c...

第十章 函式

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

第十章 屬性

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