組合語言五 組合BCD碼拆分分離BCD碼

2021-08-15 11:36:32 字數 949 閱讀 7100

1.題目要求:

編寫組合語言程式:將位元組儲存單元buf中組合bcd碼拆成兩個分離bcd碼,並轉換成兩個對應的ascii碼,分別存放在c1和c2單元中。

2.編寫**:

stack segment stack

'stack'

dw 100h dup(?)

top label word

stack ends

data segment

buf db 16h ;buf儲存組合bcd碼

c1 db 0 ;c1儲存分離bcd高位的ascii碼

c2 db 0 ;c1儲存分離bcd低位的ascii碼

data ends

code segment

assume cs:code,ds:data,es:data,ss:stack

start:

mov ax,data

mov ds,ax

xor ax,ax ;ax清零

mov al,buf ;將組合bcd碼傳送到ax

mov cl,4

shl ax,cl

shr al,cl ;ax左移四位,al右移四位,ah中和al中儲存的即是分離bcd碼

add ah,30h ;例如16h,ax左移四位是0160h,al右移四位是0106h

add al,30h ;數字0

-9對應的ascii碼為30h-

39h,將分離bcd加30h即可得到對應的ascii碼

mov c1,ah

mov c2,al

mov ah,4ch

int 21h

code ends

end start

80x86 組合語言 組合 BCD 碼的乘法

bh 與 bl 中各存放著乙個 2 位已組合十進位制 bcd 數,求其乘積返回 dx。返回 dx 也要變成 bcd 數。組合型 也稱為壓縮型 的bcd碼,是不能直接做乘法運算的。因為,在 8088 8086 指令系統中並沒有這樣的乘法指令。可以採取的方法之一是 先把 bcd 形式的乘數 被乘數都變換...

非壓縮BCD碼轉壓縮BCD碼組合語言

datas segment 此處輸入資料段 buf dw 0302h,0908h,0705h,0102h res db?buf size db?res size db?datas ends stacks segment 此處輸入堆疊段 stacks ends codes segment assume...

組合語言作業(五)

班級 計算機14 1姓名 許愷 學號 2014011329日期 2016.4.22 一 編寫程式 1.設有字陣列x y和z,各有10個元素,計算 z0 x0 y0 z1 x1 y1 z2 x2 y2 z3 x3 y3 z4 x4 y4 z5 x5 y5 z6 x6 y6 z7 x7 y7 z8 x8...