輸入乙個正數,該數減去遞增奇數(從1開始)直至小於等於零為止,計算該數減去奇數的個數
程式執行:
mov ax,datas ;初始化ds
mov ds,ax
;輸入a提示
lea dx,inputnum
mov ah,9
int 21h
;輸入a
lea dx,num_string
mov ah,10
int 21h
;a轉成十進位制數
lea si,num_string+1
call translate_to_number
mov num,ax
;mov ax,num
mov bx,1
mov cx,0
s:sub ax,bx ;減去奇數
inc cx
add bx,2 ;奇數加2
cmp ax,0 ;判斷ax是否大於0
jg s ;若大於0,迴圈繼續
mov ans,cx
lea dx,outputans ;輸出ans
mov ah,9
int 21h
mov ax,ans
call decimal
retmain endp
;字串轉換為十進位制數
translate_to_number proc near
;si:lenght first
push cx
push dx
push bx
push si
push di
mov di,10
mov ax,0
mov cl,[si]
mov ch,0
cmp cx,0
jz err
inc si
tran:
mov bl,[si]
inc si
cmp bl,'0'
jb err
cmp bl,'9'
ja err
sub bl,30h
xor bh,bh
mul di
add ax,bx
loop tran
jmp exit
err:
lea dx,error_number
mov ah,9
int 21h
mov ax,4c00h
int 21h
exit:
pop di
pop si
pop bx
pop dx
pop cx
ret
translate_to_number endp
decimal proc near
push ax
push cx
push dx
push bx
cmp ax,0
jge plus
mov bx,ax
mov dl,'-'
mov ah,2
int 21h
neg bx
mov ax,bx
plus:
mov cx,0
mov bx,10
de:xor dx,dx
div bx
push dx
inc cx
cmp ax,0
jnz de
de1:
pop dx
add dl,30h
mov ah,2
int 21h
loop de1
pop bx
pop dx
pop cx
pop ax
ret
decimal endp
codes ends
end main
組合語言學習之組合語言源程式的輸入
在dos下輸入彙編源程式的方法 一 環境的搭建 二 熟悉debug的一些除錯指令 當顯示器顯示出提示符 時,說明已進入到debug狀態,此時,可以用debug命令列來操作 1.r 指令 用法 r 暫存器的名字 作用 用於檢視暫存器的值 register的首字母 或者修改暫存器的內容。當暫存器的名字省...
組合語言(二十六)之自然數求和
輸入乙個數n,對1到n的所有自然數求和 程式執行 mov ax,datas 初始化ds mov ds,ax 輸入提示 lea dx,input mov ah,9 int 21h 輸入n lea dx,n string max length mov ah,10 int 21h 轉換成為數字 lea s...
組合語言(十一)之統計非數字字元個數
輸入以 結尾的字串,統計並輸出非數字字元的個數 程式執行 mov ax,datas 初始化ds mov ds,ax lea si,inputprompt 輸出輸入提示 mov ah,2 mov cx,inputpromptlen 輸出輸入提示的字串長度 s2 mov dl,si int 21h 輸出...