簡單一段**,耗時近3個小時,整體結構混亂,不過至少能正確輸出,雖然我也不知道為什麼正確
彙編真不是人玩兒的
assume cs:code, ds:data, ss:stacksg
data segment
dw 123, 12366, 1, 8, 3, 38
data ends
string segment
dw 48 dup (' ')
string ends
stacksg segment
db 128 dup (0)
stacksg ends
code segment
start: mov ax, data
mov ds, ax
mov ax, stacksg
mov ss, ax
mov sp, 128
mov di, 0
mov si, 0
mov cx, 6
conv: mov ax, ds:[si] ;(ax)=字型資料
call dtoc
add si, 2 ;ds:[si]指向下乙個字型資料
loop conv
mov ax, string
mov ds, ax
mov ax, 0b800h
mov es, ax
mov cx, 6
mov dh, 8
mov dl, 3
mov bl, 2
mov si, 0
s: call show_str
inc si
inc dh
mov dl, 3
loop s
mov ax, 4c00h
int 21h
;名稱: dtoc
;功能: 將word型資料轉換為表示十進位制的字串,字串以0為結尾符
;引數: (ax)=word型資料
; es:[di]指向字串的首位址
;返回: 無
dtoc: push cx
push bx
push dx
push si
mov bx, string
mov es, bx
mov si, 0 ;si作為計數器,統計有幾位數
mov bx, 10 ;除數設為10,用bx儲存
divk: mov dx, 0
div bx ;dx:ax/bx,商在ax中,餘數在dx中
add dx, 30h ;將數碼值轉化為對應數字的ascii值
push dx ;餘數入棧
inc si ;計數器加1
mov cx, ax
jcxz ok ;判斷商為0,則結束子程式
jmp short divk
ok: mov cx, si
write: pop bx
mov es:[di], bl
inc di
loop write
mov byte ptr es:[di], 0
inc di
pop si
pop dx
pop bx
pop cx
ret;名稱: show_str
;功能: 在指定的位置,用指定的顏色,顯示乙個用0結束的字串
;引數: (dh)=行號(取值範圍0-24),(dl)=行號(取值範圍0-79)
; (cl)=顏色,ds:di指向字串的位址
;返回: 無
show_str: push ax ;入棧
push dx
push di
push cx
mov di, 0 ;di儲存寫入視訊記憶體的位址
mov ah, 0
mov al, 160
mul dh
add di, ax
mov al, 2
mul dl
add di, ax ;計算8×160+30,寫入到di中
mov dh, bl ;將屬性值存放到dh中
mov ch, 0 ;ch置為0
show: mov cl, ds:[si] ;將ds:[si]中的值放入cl中
jcxz okk ;如果ds:[si]的值為0,跳轉到ok處
mov dl, cl ;將字元放入dl中
mov es:[di], dx ;將字元和屬性值寫入視訊記憶體中
inc si ;si自增
add di, 2 ;ds:[di]指向下乙個字元的位置
jmp short show
okk: pop cx
pop di
pop dx
pop ax
retcode ends
end start
棧 十進位制轉化為任意制
include include define stack init size 100 define size increment 5 typedef struct 棧結構 sqstack,sqstack int stackinit sqstack s 初始化棧 int push sqstack s,...
十進位制轉化為二進位制
今天我們來實現乙個有趣的小案例。要求 任意輸入乙個正十進位制數把它轉化為二進位制數輸出。我這裡使用了遞迴演算法 def transit num,binary 十進位制轉化為二進位制 param num 輸入的10進製 return none if num 2 remainder num 2 num ...
十進位制數轉化為D進製數
pat b1022 輸入兩個非負10進製整數a和b 2 30 1 輸出 a b 的 d 1輸入格式 輸入在一行中依次給出 3 個整數 a b 和 d。輸出格式 輸出 a b 的 d 進製數。輸入樣例 123 456 8輸出樣例 1103思路 除基取餘法。基 就是要轉化的進製d,將十進位制數每次除以d...