汇编语言杨辉三角
时间: 2023-07-11 08:11:28 浏览: 121
下面是汇编语言实现杨辉三角的示例代码:
```
; 杨辉三角
; 以第10行为例
assume cs:code
data segment
arr db 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
data ends
code segment
start:
mov ax, data
mov ds, ax
mov cx, 10 ; 循环10次
mov al, 1 ; 第一行只有1个数
row:
mov bl, al ; 复制上一行的第一个数
mov bh, 0 ; 清零bx的高位
mov si, offset arr
mov [si], al ; 将第一个数存入当前行的数组中
col:
inc si ; 数组指针加1
add al, bl ; 当前数等于上一行的相邻两数之和
mov bl, [si] ; 复制上一个数
mov [si], al ; 将当前数存入数组中
cmp si, offset arr+10
jne col
mov dl, 0dh
mov ah, 2
int 21h ; 换行
; 输出当前行
mov si, offset arr
mov dl, [si]
mov ah, 2
int 21h
inc si
col_out:
cmp si, offset arr+10
jne next
mov dl, 0dh
mov ah, 2
int 21h ; 换行
mov al, 1 ; 每行第一个数为1
dec cx
cmp cx, 0
jne row
mov ah, 4Ch
int 21h
next:
mov dl, ' '
mov ah, 2
int 21h ; 输出空格
mov dl, [si]
mov ah, 2
int 21h ; 输出当前数
jmp col_out
code ends
end start
```
这段代码使用了一个长度为11的数组来存储每一行的数,其中第一个数为1,其余为0。每次计算当前行的数时,利用上一行的数进行累加,然后将结果存入数组中。最后通过循环输出每行的数即可。
阅读全文