要求:鍵盤輸入1~9,根據輸入列印含有*的三角陣型,比如輸入為3,第一行列印乙個*,第二行列印3個*,第三行列印5個*,要求每行中間的*在同一列上。依此類推。
源程式:
data segment
str db 'input number of the lines(from 1 to 9): ', '$'
endl db 0ah, 0dh, '$'
line db 01h ; 當前所在的行標號(初始化為1)
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 str
mov ah, 09h
int 21h
mov ah, 01h
int 21h
cmp al, 31h ; 檢測無效輸入
jb over
cmp al, 39h
ja over
and ah, 00h
and al, 0fh
mov cx, ax ; 外層迴圈次數置入cx
lop1: push cx ; 外層迴圈次數暫存入堆疊
mov dx, offset endl ; 列印回車換行
mov ah, 09h
int 21h
mov bl, 00h ; 控制引數(控制每行'*'的個數)
sub cx, 01h ; 內層迴圈,每行的要列印的'空格'數比當前的cx值少1
cmp cx, 0 ; 若cx已經為0,則直接列印'*'
je lop3
lop2: mov dl, ' '
mov ah, 02h
int 21h
loop lop2
lop3: mov dl, '*'
mov ah, 02h
int 21h
inc bl ; 統計個數加1
and al, 00h ; 每行'*'的個數 = 當前行號 * 2 - 1
mov al, line
add al, al
dec al
cmp bl, al ; 判斷'*'的個數是否符合要求
je next
loop lop3
next: add line, 01h ; 行號加1
pop cx ; 外層迴圈次數彈出
loop lop1
over: mov ah, 4ch
int 21h
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 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...
彙編作業(2006 5 19)
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 實際列印出來的...