汇编语言(二十七)之身份证最后一位求和校验
生活随笔
收集整理的這篇文章主要介紹了
汇编语言(二十七)之身份证最后一位求和校验
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
輸入身份證前十七位數字,輸入18位身份證
程序運行:
?
代碼:
datas segmentw db 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2y db '1','0','X','9','8','7','6','5','4','3','2'ID_max_length db 18ID db 0, 19 dup(?)input db 'input 17-bit digital code=$'output db 0dh,0ah,'output ID=$'output_error db 0dh,0ah,'input error$'datas endsstacks segment stackdb 100h dup(?)stacks endscodes segmentassume cs:codes,ds:datas,ss:stacks main proc far start:push dsmov ax,0hpush axmov ax,datas ;初始化dsmov ds,ax;輸入提示lea dx,inputmov ah,9int 21h;輸入Nlea dx,ID_max_lengthmov ah,10 int 21hlea si,IDmov cl,[si] ;設置循環次數cmp cl,17 ;判斷長度是否合法jnz errxor ch,ch inc si mov dx,0 s:mov al,17sub al,cl lea bx,wxlat ;獲取Wimov bl,[si]cmp bl,'0' ;判斷字符是否合法jb errcmp bl,'9'ja errsub bl,30h ;獲取Aimul bl ;乘積add dx,ax ;累加求和inc siloop s mov ax,dxmov bl,11 ;和對11求余數div blmov al,ah lea bx,yxlat ;獲得第一位字符mov ID+1+17,al ;設置輸出字符串mov ID+1+18,'$'lea dx,output ;輸出提示mov ah,9int 21hlea dx,ID+1 ;輸出身份證號碼mov ah,9int 21hjmp exiterr:lea dx,output_error ;若錯誤,輸出錯誤提示mov ah,9int 21h exit:retmain endp codes endsend main?
總結
以上是生活随笔為你收集整理的汇编语言(二十七)之身份证最后一位求和校验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编语言(二十六)之自然数求和
- 下一篇: 汇编语言(二十八)之统计单词