難點在於螢幕上讀到的是什麼?是ascii碼嗎,還是真實的十進位制數?
它怎麼轉化為我們可以相加的數?
data segment
infor1 db 'please input the first data(<10):$'
infor2 db 0ah,0dh,'please input the second data(<10):$' ; 0a 是 '\n' 0d 是 '\r',回車換行
infor3 db 0ah,0dh,'the result is:$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax ;資料送入ds中
lea dx,infor1 ;輸出infor1字串
int 21h ;
mov ah,01h ;ah=1準備輸入,al=輸入字元
int 21h
sub al,30h ;輸入的為ascii碼,所以減去48是真實數字
mov bl,al
lea dx,infor2 ;輸出infor2字串
int 21h
mov ah,01h ;ah=1準備輸入,al=輸入字元
int 21h
sub al,30h ;輸入的為ascii碼,所以減去48是真實數字
xor ah,ah ;將ah清空
add al,bl
aaa ;加法ascii碼調整指令
push ax
lea dx,infor3
mov ah,09h
int 21h
pop ax
push ax
mov dl,ah
add dl,30h ;計算結束之後加上48輸出。
mov ah,02h ;2號系統呼叫,輸出單個字元,在彙編中想輸出數字只能單個ascii碼的輸出。
int 21h
pop ax
mov dl,al
add dl,30h
mov ah,02h
int 21h
mov ah,4ch
int 21h
code ends
end start
兩個數字相加
兩個數字相加 題幹 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3...
不用 實現兩個數相加
方法一 用邏輯運算 a b 表示a b 中每位不進製的和,a b 1 二進位制加法 1 1 1,把1左移以為10,1 1 10,表示a b 所有進製 思想是兩個數字相加中能分解成 不進製的和 每一位相加的進製 a b a b a b 1 如果a b 0的時候 a b a b 負整數運算也可以,因為補...
CUDA 兩個陣列相加
使用cuda實現兩個陣列的相加,熟悉cuda相關函式的使用。include include global void addkernel int c,const int a,const int b cudaerror t cuda add const int a,const int b,int out...