It is a start! Maybe never ends...

程序员的博客笔记转变
本文分享了一位软件工程实习生从纸质笔记转向网络博客的心得体会。作者认为通过博客记录编程知识不仅能方便自我回顾,还能与他人共享资源,促进交流。

I have been an intern of software engineer in DT Moble Co.,Ltd. for three months.

 

Every month, every week and even every day, I always encountered some problems and new knowledge that I've never known or ever met but forgotten.

 

As a fact, I'm always in a good habit of taking notes when reading books or having something needed to be remembered, Expecially programming knowledge.

 

However, I just taked notes on notebook or word documents on PC before. Never tried doing it on a blog via internet.

 

I think having a blog to take notes of programming material is better.

 

Because, I can share my notes with those who also need the related stuff.

 

What's more important, I can easily  browse something I need on other people's blogs, and even copy it to my blog.

 

So,  from now on, I'm gonna make a change.

以下是汇编语言的实现代码: ```asm ; 定义数据段 data segment num dw 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; 存放数字 1~10 result dw 10 dup(?) ; 存放计算结果 data ends ; 定义代码段 code segment assume cs:code, ds:data start: mov ax, data mov ds, ax ; 加载数据段地址到 ds 寄存器 mov cx, 10 ; 循环 10 次 mov si, 0 ; 清零计数器 ; 计算 1!~10! loop_start: inc si ; 计数器加 1 mov ax, [num + si*2 - 2] ; 取出数字 call factorial ; 调用阶乘子程序 mov [result + si*2 - 2], ax ; 将结果存入 result 数组 loop loop_start ; 输出结果 mov cx, 10 ; 循环 10 次 mov si, 0 ; 清零计数器 output_start: inc si ; 计数器加 1 mov dx, [num + si*2 - 2] ; 取出数字 call print_num ; 输出数字 mov dl, '!' ; 输出感叹号 mov ah, 02h ; 设置 ah 为 02h,表示输出字符 int 21h ; 调用 DOS 中断 21h,输出字符 mov dx, [result + si*2 - 2] ; 取出结果 call print_num ; 输出结果 mov ah, 02h ; 设置 ah 为 02h,表示输出字符 mov dl, ' ' ; 输出空格 int 21h ; 调用 DOS 中断 21h,输出字符 loop output_start mov ah, 4Ch ; 设置 ah 为 4Ch,表示退出程序 int 21h ; 调用 DOS 中断 21h,退出程序 ; 阶乘子程序 factorial proc push bp ; 保存 bp 寄存器 mov bp, sp ; 设置 bp 指向栈顶 push ax ; 保存 ax 寄存器 push bx ; 保存 bx 寄存器 mov ax, [bp + 4] ; 取出传入的参数 mov bx, ax ; 将参数存入 bx 寄存器 dec bx ; bx 寄存器减 1 ; 计算阶乘 loop_factorial: mul bx ; ax = ax * bx dec bx ; bx = bx - 1 cmp bx, 0 ; 比较 bx 和 0 jne loop_factorial ; 如果不等于 0,继续循环 pop bx ; 恢复 bx 寄存器 pop ax ; 恢复 ax 寄存器 pop bp ; 恢复 bp 寄存器 ret ; 返回子程序 factorial endp ; 输出数字子程序 print_num proc push ax ; 保存 ax 寄存器 push bx ; 保存 bx 寄存器 push cx ; 保存 cx 寄存器 push dx ; 保存 dx 寄存器 mov bx, 10 ; 将 10 存入 bx 寄存器 xor cx, cx ; 清零 cx 寄存器 ; 将数字转换为字符并存入栈中 digit_loop: xor dx, dx ; 清零 dx 寄存器 div bx ; ax = ax / bx,dx = ax % bx add dl, '0' ; 将余数转换为字符 push dx ; 将字符存入栈中 inc cx ; 计数器加 1 cmp ax, 0 ; 比较 ax 和 0 jne digit_loop ; 如果不等于 0,继续循环 ; 输出栈中的字符 output_loop: pop dx ; 取出字符 mov ah, 02h ; 设置 ah 为 02h,表示输出字符 int 21h ; 调用 DOS 中断 21h,输出字符 loop output_loop ; 循环直到所有字符都被输出 pop dx ; 恢复 dx 寄存器 pop cx ; 恢复 cx 寄存器 pop bx ; 恢复 bx 寄存器 pop ax ; 恢复 ax 寄存器 ret ; 返回子程序 print_num endp code ends end start ``` 该程序首先定义了一个数据段,其中包含了数字 1~10,以及一个存放计算结果的数组。然后定义一个代码段,其中包含了一个阶乘子程序和一个输出数字的子程序。在主程序中,使用循环调用阶乘子程序计算 1!~10!,并将结果存入数组中。然后使用循环输出数字和对应的阶乘结果。最后退出程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值