buffer db 6,?,6 dup(?):資料段在記憶體中定義7個位元組的資料buffer,第乙個6表示輸入的數字最大長度為6assume cs:code,ds:data
data segment
buffer db 6,?,6 dup(?)
c10 dw 10
data ends
code segment
start: mov ax,data
mov ds,ax
mov ah,0ah
int 21h
mov ax,0
mov cl,buffer+1
mov ch,0
lea bx,buffer+2
s: mul c10
mov dl,[bx]
and dl,0fh
add al,dl
adc ah,0
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
mov ah,0ah int 21h:鍵盤輸入到緩衝區,ds:dx=緩衝區首位址,(ds:dx)=緩衝區最大字元數 ,傳入引數:(ds:dx+1)=實際輸入的字元數
mov cl,buffer+1:將輸入的字元數用來作為迴圈的次數
mul c10: mul c10(10h) 等於進製 十六進製制資料乘10h即進製
mov dl,[bx] and dl,0fh:比如
「1」ascll碼:0011_0001
與0f(0000_1111) and 得到 0000_0001
即把字元1變為了數字1
add al,dl adc ah,0:把轉化後資料放入ax中,迴圈第一次時第一次ax是0,所以直接相加,第二次時之前的位進製後與再次的到的各位相加
執行:輸入1234
第一次將字元1 變為數字1 則ax暫存器:
進製後 1變為10 則ax暫存器(000a):
第二次將字元 2 變為數字2 即 總共將12 轉換為
數字12 則ax暫存器(000c):
最終結果 將字元1234 轉化為數字1234 則ax暫存器(04d2)
將數字轉化為字串
將數字轉化為字串 方法一 include int main void temp 0 scanf d num number num do while number 0 string i 0 printf number d,位數是 d位 n num,i 統計出位數 for j 0,i j i 2 j i...
用彙編實現數字轉化為字串的函式itoa
為了更加清楚地讓我們知道,如何使用組合語言來實現這個函式,下面先以用c語言自己實現乙個itoa函式,再來說明使用組合語言實現方法及思想。因為無論是用c語言還是使用組合語言,其實現思想和方法都是一樣的,只是描述的語言不同。但是我們都比較熟悉c語言,而對組合語言並不是那麼的熟悉,所以為了讓我們更加好地理...
將 u的字串轉化為中文
筆者這裡涉及到這麼乙個場景 本地儲存了一張,路徑為 python伺服器接收到乙個經過utf 8編碼的json字串,內容是上述路徑。但是,我在print該路徑時,顯示如下 a c users administrator desktop testcorrect711 u667a u6167 u8bfe ...