data segment
x db 5, ?, 5 dup(0)
xx dw 0 ; 將x完成拼接操作存入xx (將xx當作要被轉換的資料處理)
y db 5 dup(0) ; 存轉換後的10進製數
str1 db 'input 4 digits: $'
str2 db 0ah, 0dh, 'the bcd code is: $' ; 實際列印出來的是bcd碼表示的10進製數
str3 db 0ah, 0dh, 'input error! try again! $'
data ends
stack segment para stack
dw 20h dup(0)
stack ends
code segment
assume cs:code, ds:data, ss:stack
begin: mov ax, data
mov ds, ax
mov dx, offset str1
mov ah, 09h
int 21h
mov dx, offset x
mov ah, 0ah
int 21h
mov di, offset x
inc di
mov bl, [di]
cmp bl, 4 ; 檢測輸入是否為4位
je next
jmp error
next: inc di
push di
call tes ; 檢測輸入有效性並轉化ascii為數字
pop di
call change ; 將x按位拼接到xx中,使之成為長度為乙個字的16進製制數
mov dx, xx
mov di, offset y
mov cx, 0h ; 存放10進製數的位數
lop2: mov ax, dx ; 被除數放入ax
mov dx, 0h
mov bx, 10
div bx ; 除以10,餘數在dx中,商在ax中
xchg ax, dx ; 交換餘數和商的位置
add al, 30h ; 把餘數轉化為ascii碼
mov [di], al ; 存餘數
inc di
inc cx ; 位數計數器加1
cmp dx, 0h ; 如果商為0,則輸出
jnz lop2
mov dx, offset str2
mov ah, 09h
int 21h
lop3: dec di ; cx(10進製數的位數)控制此迴圈
mov dl, [di] ; 依次輸出
mov ah, 02h
int 21h
loop lop3
mov dl, 'd'
int 21h
jmp over
error: mov dx, offset str3
mov ah, 09h
int 21h
over: mov ah, 4ch
int 21h
tes proc ; 檢測與轉換輸入的子程式
mov cx, 4
lop0: mov ax, 0
mov al, [di] ; 判斷輸入的不同情況
cmp al, '0'
jb error
cmp al, 'f'
ja error
cmp al, '9'
jbe part1
cmp al, 'a'
jb error
cmp al, 'f'
jbe part2
cmp al, 'a'
jb error
cmp al, 'f'
jbe part2
part1: and al, 0fh ; 開始轉化為數值
mov [di], al ; 替換原始ascii碼
jmp continue1
part2: sub al, 07h
jmp part1
continue1: inc di
loop lop0
rettes endp
change proc
mov bx, 0
mov cx, 3 ; 總共移位3次,或運算拼接4次
lop1: push cx
or bl, [di]
mov cl, 4
shl bx, cl ; 左移4個2進製位(1個16進製制位)
inc di
pop cx
loop lop1
or bl, [di] ; 多進行或運算一次
quit: mov xx, bx ; 拼接完成存入bx
retchange endp
code ends
end begin
彙編作業(2006 5 3)
題目 從鍵盤讀入兩個一位十六進製制數,根據條件,以十六進製制輸出計算結果 a 計算x y b 計算 x y c 計算x y d 計算x y 源程式 data segment x db y db z db 2 dup 0 list db 0123456789abcdef 檢測輸入是否為有效數字的儲存列...
彙編作業(2006 5 9)
要求 鍵盤輸入1 9,根據輸入列印含有 的三角陣型,比如輸入為3,第一行列印乙個 第二行列印3個 第三行列印5個 要求每行中間的 在同一列上。依此類推。源程式 data segment str db input number of the lines from 1 to 9 endl db 0ah,...
彙編作業(2006 5 10)
題目 計算x的n次方,x與n為從鍵盤讀入的十進位制數,結果以十六進製制輸出 源程式 data segment str1 db input x 1 5 str2 db 0ah,0dh,input n 1 5 str3 db 0ah,0dh,the result is x db 0 n db 0 y d...