實驗十 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 臨時,可調整...