用組合語言編寫程式段,實現從鍵盤輸入一位10進位制數後累加

時間 2021-08-14 22:58:25

1樓:匿名使用者

code    segment

assume cs:code

org 100h

start:

jmp bbb

lfcr    db 13,10,'$'

bbb:

push cs

pop ds

call inputnum

mov ah,9

lea dx,lfcr

int 21h

lea si,array

mov ch,0

mov cl,byte ptr[num]

mov ax,0

lp:add ax,word ptr[si]daa       ;  十進位制加法調整指令inc si

inc si

loop lp

call dispnum

mov ah,4ch

int 21h

dispnum proc near

;   將要顯示的資料放入al中

mov dl,al   ; 將al暫存在dl中and al,0fh  ; 取al的低4位mov bl,al   ; 非壓縮的bcd碼add bl,30h  ; 轉成ascii碼mov al,dl   ; 取回al 並經以下4次右移取出al的高4位

shr al,1

shr al,1

shr al,1

shr al,1

mov bh,al    ; 非壓縮的bcd碼add bh,30h   ; 轉成ascii碼mov ax,bx    ; 非壓縮的兩位數的ascii碼存放在ax中

mov byte ptr[y+4],al

mov byte ptr[y+3],ah

mov ah,9

lea dx,y

int 21h

rety   db 10,13,0,0,0,'$'

dispnum endp

inputnum proc near

; 輸入的資料以一個空格分隔,以回車符結束輸入lea di,array  ;將陣列第一個元素的有效地址置入dimov byte ptr[num],0

stin:

mov ax,0

push ax

again1:

mov ah,1

int 21h

mov byte ptr[char],alcmp al,13

je line0

cmp al,' '

je line0

sub al,30h

mov ah,0

mov si,ax

pop ax

mov cl,10

mov ch,0

mul cx

add ax,si

push ax

jmp again1

line0:

pop ax

mov word ptr[di],ax

inc byte ptr[num]

cmp byte ptr[char],13je stinend

inc di

inc di

jmp stin

stinend:

retarray dw 100 dup(0)num   db 0

char  db ?

inputnum endp

code    ends

end start

2樓:匿名使用者

data segment

buf db 1,2,3,4,5,6,7,8,9,0r   dw 0

f   db 0dh,0ah,'$'

data ends

code segment

assume cs:code, ds:datastart:

mov ax,data

mov ds, ax

;read 10 8bit number base 10mov cx, 10

mov si, 0

mov ah,1

l1:int 21h

;  sub al, 30h

mov buf[si], al

inc si

loop l1

;sum the 10 number

;you can do this at previous loopmov cx, 10

mov si,0

mov ax,0

l2:add al,buf[si]

aaainc si

loop l2

;到這裡,執行完畢之後,ah儲存高位,al存放低位mov r,ax

lea dx, f

mov ah,9

int 21h

mov dl,byte ptr r+1

mov ah,2

add dl,30h

int 21h

mov dl,byte ptr r

add dl,30h

int 21h

mov ah,4ch

int 21h

code ends

end start

用組合語言怎樣實現16進位制轉換為壓縮的bcd碼 10

3樓:修者世界

一個十六進位制數最大255,所以轉換為壓縮bcd碼需要兩個位元組,轉換方法是:

1、第一步,用該數除以100,結果存入高八位位元組的低四位。

2、第二步用餘數除以10,結果存入低八位的高四位。

3、第三遍,將餘數存入低八位的低四位。

例程:h2bcd:

mov b,#100

div ab

mov r2,a

mov a,b

mov b,#10

div ab

swap a,b

anl a,#0f0h

orl a,b

mov r3,aret

怎麼用組合語言編寫程式,統計字串的長度並輸出

允天曼 ho彙編?不是很懂.用字串.length 看是不是能獲得長度?int i 字串.indexof 獲得位置字串.substring i, 組合語言編語言也分好多種的,你說的是哪一種語言 data segment msg1 db length shex db 0123456789abcdef m...

用8086組合語言編寫程式,接受從鍵盤上輸入的兩位十進位制數字,這個數經過BCD碼處理,以十六進位制顯示出

做而論道 disp str macro x 巨集定義.mov dx,offset x mov ah,9 int 21h endm data segment 資料段.msg1 db 13,10,please input msg3 db 13,10,the hex is x dw 存放新輸入資料.dat...

用組合語言編寫時鐘程式,能顯示時分秒的,還要有秒錶就是計

雪蕻軒 stack1 segment stack dw 200 dup stack1 ends data segment space db 1000 dup pattern db 6 dup 0c9h,26 dup 0cdh 0bbh,6 dup db 6 dup 0bah,26 dup 20h 0...