;將ax中的值以十進位制形式輸出
assume ds:data1,ss:stack1
data1 segment
decimal db 6 dup(?),'$(編譯時去掉此處括號)'
temp db 6 dup(?)
data1 ends
;stack1 segment stack
db 256 dup(?)
stack1 ends
;不同段的子程式——output in decimal
;好像只能放在主程式的前面
code2 segment
outdec proc far
assume cs:code2
;begin:暫存器保護,將子程式中用到的暫存器儲存
push di
push bx
push cx
push dx
push si
;end
lea di,temp
mov bx,10
mov cx,0 ;記錄十進位制數的位數
again: xor dx,dx
div bx
mov [di],dl ;儲存餘數
inc di
inc cx
cmp ax,0
jne again
mov si,offset decimal
add si,cx
mov [si],'$(編譯時去掉此處括號)' ;字串結束符
dec si
lea di,temp
next: mov al,[di]
mov [si],al
add [si],30h ;轉為ascii碼
dec si
inc di
dec cx
cmp cx,0
jne next
lea dx,decimal
mov ah,9
int 21h
;begin:暫存器恢復
pop si
pop dx
pop cx
pop bx
pop di
;end
retoutdec endp
code2 ends
;主程式
code1 segment
assume cs:code1
start: mov ax,data1
mov ds,ax
; mov ax,0ffffh ;設定ax的值;不能寫成ffffh
call far ptr outdec
mov ah,4ch
int 21h
code1 ends
end start
彙編原始碼學習1 找出最大的數
找出最大的數,存放在al assume cs code1,ss stack1,ds data1 data1 segment array db 1,8,9,2,5,4,7,6,3,10 data1 ends stack1 segment stack 這裡必須加stack db 256 dup stac...
彙編原始碼學習5 輸入字串
輸入9個以內的字元並輸出 data1 segment string db 10,10 dup 編譯時去掉此處括號中的內容 第1個單元存放限制輸入的字元個數,含回車符13 第2個單元存放實際輸入的字元個數,不含回車符13 實際的字串從第3個單元開始 data1 ends stack1 segment ...
彙編學習筆記8
第八講.由於前天把第7講又聽了一遍,昨天是第8講.第7講用了兩天才聽完.第8講繼續講述指令.在第7講裡講了三個指令 5個 movxchg lea,lds,les 它們各有各的限制.mov,源運算元和目的運算元不能都是儲存單元,目的運算元不能是立即數,源運算元和目的運算元不能都是段暫存器,立即數不能作...