彙編 將螢幕輸入的兩個數相加

2021-09-13 02:55:07 字數 1273 閱讀 5345

難點在於螢幕上讀到的是什麼?是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...