任意兩個10位以內
十進位制數
求和顯示結果
組合語言程式設計 懸賞分:20 - 離問題結束還有 11 天 1 小時
從鍵盤上鍵入2個10位數以內(位數可變)十進位制值數,對其求和並顯示結果,
程式執行時提示請輸入加數和被加數,求完和顯示結果後,顯示繼續和退出。
提問者: mowenyi108 - 一級
code segmentassume cs:code,ds:code
org 100h;標準com格式
start:
mov ax,3;文字模式
int 10h
push cs
pop ds
push ds
pop es
again:
lea dx,mes1;提示
mov ah,9
int 21h
mov di,30fh
call input;接收 數a
lea dx,mes2;提示
mov ah,9
int 21h
mov di,31fh
call input;接收 數b
call count;求和
lea dx,mes3
mov ah,9
int 21h
;*** 輸出十進位制的結果 ***
call crt
lea dx,mes4
mov ah,9
int 21h
mov ah,0;暫停
int 16h
cmp ah,15h ;"y(y)"繼續
jz again;計算下一題
mov ah,4ch;結束
int 21h
input:
mov cx,10
t1:mov ah,0;接收數字
int 16h
cmp al,0dh
jz ok
cmp al,'0';資料校驗
jb t1
cmp al,'9'
ja t1
yes:
mov ah,0eh ;顯示有效資料
int 10h
w2:push ax ;壓入堆疊
loop t1
ok:mov bp,cx
inc bp
mov cx,11
sub cx,bp
stdjcxz u3
u1:pop ax
stosb
loop u1
u3:mov al,'0'
mov cx,bp
u2:stosb
loop u2
retcount:mov si,30fh
mov di,31fh
xor dx,dx;清進製
mov cx,11;改變此值,可實現超大數相加
t3: call subs_c;逐位累加
dec si
dec di
loop t3
retsubs_c: ;[原創]多位加法核心子程式
mov al,[si];最低位對齊
mov ah,[di]
and ax,0f0fh
add al,ah;自加
add al,dl;加後面進製
aam;二化十
mov dl,ah;存進製位
or al,30h
mov [si],al;儲存1位和值
retcrt:cld
xor bp,bp
mov si,305h
mov cx,10
cr3:
mov al,[si]
cmp al,'0'
jnz cr0
inc bp
inc si
loop cr3
cr0:
mov cx,11
sub cx,bp
mov si,305h
add si,bp
cr1:lodsb
mov ah,0eh
int 10h
loop cr1
retmes1 db 0dh,0ah,09,'input a(0-9,999,999,999): $'
mes2 db 0dh,0ah,09,'input b(0-9,999,999,999): $'
mes3 db 0dh,0ah,09,'sum a+b= $'
mes4 db 0dh,0ah,09,'continue y(y)? $'
code ends
end start
十六進製制以內任意進製數轉十進位制
十六進製制以內任意進製數轉十進位制的c語言實現 include include include include include int parseint char str,int type if type 16 else if tmpchar a tmpchar f else else printf...
ACM 任意的十進位制數轉成R進製
原題是這樣的 description 輸入乙個十進位制數n,將它轉換成r進製數輸出。input 輸入資料報含多個測試例項,每個測試例項包含兩個整數n 32位整數 和r 2 r 16,r 10 output 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果r大於10,則對應的數字規則參考16進製制 ...
例項 十進位制數n轉化為任意進製
題目描述 對於任意整數n,轉化成x進製的表達形式 演算法分析 演算法實現 十進位制正整數n到base進製的轉換 static const char basenum void convert std stack s,int64 n,int base void convertr std stack s,...