開發環境為emu8086!!
1 begin
name "run nian"
;project to check if it's run nian.
propmt macro ppt ;定義輸出巨集
mov dx,offset ppt
mov ah,09h
int 21h
endm
stack segment
dw 100 dup(?)
stack ends
data segment
input db "please input a concreat year:",10,13,'$'
outpyes db "it's a run nian!",10,13,'$'
outpno db "it's not a run nian!",10,13,'$'
data ends
code segment
assume cs:code, ds:propmt,ss:stack
start:
mov ax,data
mov ds,ax
mov ax ,offset input
call printfs
mov ax ,offset outpyes
call printfs
mov ax ,offset outpno
call printfs
mov dl,'s'
call printfc
mov dl,'x'
call printfc
mov dl,'b'
call printfc
mov ah,4ch
int 21h
printfs proc ;輸出字串函式引數存放於ax中
mov dx,ax
xor ax,ax
mov ah,09h
int 21h
retprintfs endp
printfc proc ;輸出字元函式引數存放於ax中,dl is param
mov ah,02h
int 21h
retprintfc endp
code ends
end start
/1 end/
2 begin
name "interrupt"
data segment
propmt db "please input year=$"
year db 10, ?, 9 dup('$') ;變數
string db 101,?, 100 dup('$') ;字串以'$'結束
x dw 0 ;中介
high_w dw 0 ;資料的高十六位
low_w dw 0 ;低十六位
h16 dw 0 ;(dx:ax)=10^i
l16 dw 0
data ends
code segment
assume cs:code, ds:data, ss:stack
start:
mov ax,data
mov ds,ax
mov es,ax
;提示輸入變數
lea dx,propmt
mov ah,9
int 21h
;輸入年份
mov ah,10
lea dx,year
int 21h
;cx儲存實際輸入字元個數
xor cx,cx
mov cl,byte ptr year[1]
push cx
;輸出資料長度
mov ah,2
add cl,30h
mov dl,13
int 21h
mov dl,10
int 21h
mov dl,cl
int 21h
pop cx
;對所輸入的字元轉化為十進位制
call yearchasla
;exit dos
xor ax,ax
mov ah,4ch
int 21h
;對所輸入的字元轉化為十進位制
yearchasla proc near
push cx
push si
push bx
xor si,si
add si,2
mov bx,cx ;暫存cx的值
lycs:
sub byte ptr year[si],30h
inc si
loop lycs
dec si ;調整si
mov cx,bx ;次數重灌
;對獲取的十進位制值資料累加
mov bx,10 ;bx用
mov dx,0
mov ax,1 ;for(;cx-1!=0;i++)每迴圈一次乘以10
mov l16,ax ;即ax=((ax=10^i)* 10)
mov h16,dx
sumget:
mov al,byte ptr year[si]
cbw ;把數值擴充套件為16位
add low_w ,ax
call proceyear
dec si
loop sumget
ret
yearchasla endp
proceyear proc
;完成(h16:l16)=10^i
mov ax,h16
mul bx ;dx * 10^i
mov h16,ax
mov ax,l16 ;l16=(l16*1)*10*10...*10
mul bx ;實現 (dx:ax)=10^i
add h16,dx
mov l16,ax
;完成(high_w:low_w)*l16
mul high_w
mov high_w,ax ;dx被清零
mov ax,l16
mul low_w
add high_w,dx
mov low_w,ax
;完成(high_w:low_w)*h16
mov ax,h16
mul high_w
mov high_w,ax ;dx被清零
mov ax,h16
mul low_w
add high_w,dx
mov low_w,ax
retproceyear endp
code ends
end start
/2 end/
分享兩個小程式
小編也不知道大家能不能用的到,我只是把我學到的知識分享出來,有需要的可以看一下。python本身就是乙個不斷更新改進的語言,不存在抄襲,有需要就可以拿過來用,在用的過程中,你發現可以用另外一種方法把它實現,就可以把 做進一步的優化,然後分享出來,這樣python會變的越來越實用。今天心情不好,分享兩...
兩個小電路
第乙個是cmos與非門振盪電路 這個電路的原理其實是負反饋,b點反饋給a,因為a,b兩點的電壓相反所以是負反饋。又因為在a與e之間加了電容,所以是慢反饋,b和a如蹺蹺板兩端,在0與1之間來回跳變,那麼就會形成振盪,振盪頻率計算公式如下 第二個電路是電容降壓型穩壓電路 將交流市電轉換為低壓直流的常規方...
彙編 通過子程式交換兩個記憶體變數
交換 esi edi 兩個記憶體變數 moveax,esi xchg eax,edi mov esi eax 功能 使用子程式交換兩個記憶體變數 include vcio.inc data num1 dword 1234 num2 dword 5678 str output byte num1 d,...