【汇编语言实战】实现九九乘法表

C语言描述:

#include <stdio.h>
int main()
{
	for(int i=1;i<=9;i++)
	{
		for(int j=1;j<=i;j++)
		{
			printf("%d*%d=%d ",i,i,i*j);
		}
		printf("\n");
	}
}

汇编语言:

INCLUDE Irvine32.inc
.data
.code
main PROC
    mov esi, 1
outLoop:
    cmp esi,10
    jge final
    mov edi,1
inLoop:
    cmp edi, esi
    jg next
    mov eax,edi
    call writedec
    mov al,'*'
    call writechar
    mov eax,esi
    call writedec
    mov al,'='
    call writechar
    mov eax,esi
    mov ecx,edi
    mul ecx
    call writedec
    mov al,' '
    call writechar
    inc edi
    jmp inLoop
next:
    call crlf
    inc esi
    jmp outLoop
final:
    popad
    exit
main ENDP
 
END main

运行结果:

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
汇编语言中显示九九乘法表是一个经典的编程练习,它涉及到循环、算术运算和字符输出。由于汇编语言的指令集是低级别的,这里我会给出一个简单的x86汇编语言示例(针对Intel架构),使用MASM(Microsoft Assembler)风格的汇编: ```assembly section .data times 99 db 0 ; 创建一个数组,用来存储乘积结果 multipliers db ' ', 0, 'x', ' ', '(', 0 ; 乘法字符串模板 digit db '0'..'9' ; 单个数字字符 newline db 0Ah, 0Dh, 0 ; 新行字符 section .text global _start _start: mov ecx, 1 ; 初始化乘数 mov ebx, 1 ; 初始化被乘数 display_loop: call print_number ; 打印乘数 call print_multiply_sign ; 打印乘号 call multiply_and_store call print_newline ; 换行 inc ebx ; 增加被乘数 cmp ebx, ecx ; 如果被乘数大于乘数,结束循环 jg end_of_loop end_of_loop: mov ecx, 99 ; 重新设置乘数为99 jmp display_loop ; 从头开始打印剩余的乘法表 print_number: push ebx ; 保存被乘数 mov eax, ebx ; 将被乘数传入eax call convert_to_char ; 将数值转换为字符并输出 pop ebx ; 恢复被乘数 ret convert_to_char: add al, '0' ; 字符'0'对应数值0,以此类推 mov [esi], al ; 写入字符到数组 inc esi ; 指针后移 ret print_multiply_sign: mov al, '*' ; 输出乘号字符 mov [esi], al ; 写入字符到数组 inc esi ; 指针后移 ret multiply_and_store: imul ecx ; 乘法运算并将结果存回eax add [times + eax], '0' ; 将结果转为字符并写入数组 ret print_newline: mov [esi], newline ; 写入新行字符 inc esi ; 指针后移 ret ; 注意:这个代码只是一个简化的示例,实际的汇编程序可能需要更多的上下文,比如设置栈指针、输入/输出函数、终止进程等。 ``` 这个示例中,`convert_to_char`函数将数值转换为字符,`print_number`调用它来打印乘数。然后是乘法和结果存储,以及换行操作。这是一个基础框架,具体实现可能需要在特定平台上调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏,祝你平安喜乐。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值