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

時間 2021-08-14 22:59: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

用組合語言編寫程式計算5 10

超級花生 dseg segment result dw 存放和 dseg ends cseg segment assume cs cseg,ds dsegstart mov ax,dseg mov ds,ax mov ax,5 從5開始加 mov result,0 和的初值賦0 mov cx,20 ...

如何編寫程式實現從鍵盤輸入一行英文句子,輸入到螢幕上,並將每

有個缺陷,如果是this is a test,則把a也大寫了,不知道這樣是不是符合你的要求。按你的題目講是正確的 如果不符合,則稍加個判斷即可。include include int main for i 0 i a s i 1 z s i 1 s i 1 0x20 printf s n s 編寫一...

求答案 試編寫組合語言程式,要求對鍵盤輸入的小寫字母用大寫字母顯示出來

中原小壞蛋 按回車結束程式 codes segment assume cs codes start a mov ah,01h int 21h cmp al,0dh jz exit sub al,32 mov dl,al mov ah,02 int 21h jmp a exit mov ah,4ch ...