王爽《組合語言》實驗十

2022-09-01 05:39:08 字數 2857 閱讀 2052

實驗十 3.數值顯示(以下程式附帶測試程式)

1

;名稱: dtoc2;

功能: 將dword型資料轉變為表示十進位制數的字串,字串以0為結尾3;

引數: (ax)=dword型資料低字4;

(dx)=dword型資料高字5;

ds:si指向字串的首位址6;

返回: 無

7 assume cs:

code

8data segment

9 haha dd 4294967295

10 tata dd 16

dup(?)

11data ends

12code segment

13main:

14mov

ax,data

15mov

ds,ax

16mov

si,offset haha

17mov

ax,[si]

18add si,2

19mov

dx,[si]

20mov

si,offset tata

21call

dtoc

22mov dh,12

23mov dl,30

24mov cl,1

25mov

si,offset tata

26call

show_str

27mov

ax,4c00h

28int

21h29

30dtoc:

31push

bx32

push

cx33

push

si34

mov bx,0

;bx 用於記錄最終的位數

35r:

36mov cx,10

37call

divdw

38push cx ;

計算餘數,商,餘數儲存入棧

39inc bx ;

位數增加

4041

cmp dx,0

42jnz

next

43cmp ax,0

44jz ok ;

商為0,則跳出r迴圈

45next:

46jmpr47

ok:mov

cx,bx

48s:

popax

49add

al,30h

50mov

[si],al

51inc

si52

loop s

53mov byte ptr [si],0

54pop

cx55

popbx

56pop

si57

ret58

59divdw:

60push

bx 61

movbx,ax

62mov

ax,dx

63mov dx,0

64div

cx65

push ax ;

將int(h/n)入棧

66mov

ax,bx

67div cx ;

[rem(h/n)*65536+l]/n結果商放在dx中,餘數放在ax中

68mov

cx,dx

69pop

dx70

popbx

71ret

7273

show_str:

74push

cx75

push

bx76

push

ax77

push

dx78

push

ds79

push

es80

push di ;

將要使用到的暫存器入棧

8182

movax,0b800h

83mov

es,ax

84mov al,160

85mul

dh86

mov bx,ax ;

基址賦值

87mov al,2

88mul

dl89

mov di,ax ;

變址賦值

9091

read:

92mov

ch,[si]

93cmp ch,0

94jz ok2 ;

判斷是否遇到字串尾端

9596

movah,cl

97mov

al,[si]

98mov

es:[bx+di],ax

99inc

di100

inc di ;

指向下乙個螢幕顯示位置

101inc si ;

指向下乙個字元

102jmp

read

103ok2:

104pop

di105

popes

106pop

ds107

popdx

108pop

ax109

popbx

110pop cx ;

使用到的暫存器出棧

111ret

112113

code ends

114 end main

王爽 組合語言 實驗10 1

assume cs code,ds data data segment db welcome to masm 0 data ends code segment start mov dh,8 行號 mov dl,3 列號 mov cl,2 顏色 mov ax,data mov ds,ax mov si...

王爽 組合語言 實驗7

assume cs codesg,ds data ss stack data segment db 1975 1976 1977 1978 1979 1980 1981 1982 db 1983 1984 1985 1986 1987 1988 1989 1990 db 1991 1992 1993...

王爽 組合語言 實驗9

assume cs code data segment db welcome to masm db 00000010b,00100100b,01110001b data ends code segment start mov ax,data mov ds,ax mov si,07c0h 臨時,可調整...