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...