在汇编中打印字符的三角形

2023-12-02

我正在开发这个练习:

编写汇编程序,给定一个字符作为输入,输出一个大小为字符本身 5 x 5 的三角形。

我有一个问题,因为当我输入一个字符时,这些字符没有形成三角形,而是打印了其他字符。

我的输入:

f

我的输出:

期望的输出:

f
ff
fff
ffff
fffff

My code:

Title PROVA
;programma per la prova dell’ambiente Turbo Assembler 

DOSSEG
.MODEL SMALL
.STACK 100 
.DATA 
; se ci sono qui vanno dichiarate le vriabili

.CODE
  MOV AX, @data  ;(obbligatorie) inizializzano il DS      
  MOV DS, AX 
  
  MOV AX, 00
  MOV BX, 00
  MOV CX, 00
  MOV DX, 00

  mov ah,01h ;input va a mettere l'input in AL ;n
  int 21h
  MOV BL, AL ;n
  MOV CL, BL ;n
  
  MOV CH, 0H
  
  ciclo:
  CMP CH, 5H
  JE fine

  inc CH

  MOV DL, BL
  mov ah, 02h  ;stampa il contenuto di dl
  int 21h

  mov DL, 10D
  int 21h
  mov DL, 13D
  int 21h
  
  ;BL
  ADD BL, CL 
  
  JMP ciclo

  fine:
  MOV AL, 00H  ;(obbligatorie) ritornano il controllo al sistema operativo      
  MOV AH, 4CH 
  INT 21H 
 
END  

正如 vitsoft 指出的那样,字符发生了变化,因为您添加了CL to BL。 正如迈克尔所说,要制作三角形,您需要使用另一个循环。 以下是要更改的部分:

  MOV   AH, 01h  ; input va a mettere l'input in AL ;n
  INT   21H
  MOV   BL, AL   ; n
  
  MOV   CH, 0H
ciclo:
  CMP   CH, 5H
  JE    fine
  INC   CH
  
  MOV   DL, 10D
  INT   21H
  MOV   DL, 13D
  INT   21H
  
  MOV   CL, CH
  MOV   AH, 02H  ; stampa il contenuto di dl
  MOV   DL, BL
innerLoop:
  INT   21H
  DEC   CL
  JNE   innerLoop

  JMP ciclo

fine:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在汇编中打印字符的三角形 的相关文章

  • 英特尔 JCC 勘误表 - 用于缓解的前缀有什么影响?

    Intel 推荐 https www intel com content dam support us en documents processors mitigations jump conditional code erratum pd
  • 有哪些 x86 指令会对 ESP 产生副作用?

    我知道call and ret将修改的值esp然后push and pop有很多变体 但是还有其他指令会影响堆栈指针吗 The following instructions modify the stack pointer as an im
  • /usr/bin/as:无法识别的选项“-EL”

    因此 在为我的1plus手机编译android内核时 经过3天的多次尝试 我放弃了并尝试在这里询问是否有人以前遇到过这个问题 这个错误对我来说有点模糊 但我觉得问题来自于我最近对 GNU Linux 发行版 Gentoo 的更改 它在不应该
  • x86 程序执行期间方向标志 (DF) 的默认状态

    在反汇编中 我经常看到使用字符串操作指令而不考虑方向标志 DF 的状态 如下所示 or ecx 0FFFFFFFFh xor eax eax mov edi ebp repne scasb CLD or STD自函数开始以来未找到指令 也未
  • 电路解码所需的最小输入位数

    我正在学习计算机体系结构 并且正在阅读有关编码器和解码器的内容 在 MIPS 处理器中 操作码有 6 位 我想知道构建解码器来解码操作码需要多少输入位 我知道解码器是一个组合电路 它将二进制信息从 n 个输入线转换为最多 2 n 个唯一的输
  • 在 AT&T x86 程序集中查找转义字符

    问题一 我有以下汇编代码 其目的是循环输入字符串 并计算它遇到的转义字符 的数量 globl sprinter data escape string string num escape long 0 num characters long
  • MIPS 汇编不支持“.set noat”吗?

    目前 我正在学习GNU as 并在 info as 中找到了很多有用的信息 我发现 set noat 在MIPS指定的代码中使用 但是当在 info as 中搜索该指令时 我在节点 alpha指令 中找到了它的解释 但在 MIPS Depe
  • 如何在 x86 汇编中编写自修改代码

    我正在考虑为我最近开发的一个业余爱好虚拟机编写一个 JIT 编译器 我了解一些汇编语言 我主要是一名 C 程序员 我可以阅读大多数汇编语言并参考我不理解的操作码 并编写一些简单的程序 但是我很难理解这几个示例我在网上找到的自我修改代码 这是
  • 如何创建一个扩展为“(x+y*240)*2”这样的表达式的 GNU GAS 宏?

    我正在使用 GAS 为 ARM Linux 构建一个程序 但我想做一些宏以使我的开发更加智能 然后我想知道 我怎样才能为此做一个宏 x y 240 2 were x and y are int 将像这样使用 mov r0 MACRO SHO
  • 使用 XCHG 解锁的自旋锁

    维基百科提供的使用 x86 XCHG 命令的自旋锁的示例实现是 Intel syntax locked The lock variable 1 locked 0 unlocked dd 0 spin lock mov eax 1 Set t
  • MS-DOS - 是否可以对 24 位图形进行编程?

    是否可以在 DOS 机器上以 24 位颜色深度进行编程 我知道 VGA 支持 8 位色深 但是有没有办法弄出 24 位色深 谷歌的研究没有发现任何结果 我正在 FreeDOS 而不是 MS DOS 上编程 如果这会影响答案的话 对的 这是可
  • 是否可以调用驻留在 exe 中的非导出函数?

    我想调用驻留在第 3 方 exe 中的函数并获取其结果 好像有should是一种方法 只要我知道函数地址 调用约定等 但我不知道如何 有谁知道我会怎么做 我意识到任何解决方案都是非标准的黑客 但有must成为一种方式 我的非恶意用例 我正在
  • 当我尝试在 Armv8 程序集中分配数组时,执行冻结

    所以我正在用汇编语言进行编程 这只是一个简单的代码 这样我就可以学习如何分配数组 以便稍后在 NEON 编程中使用它们 ASM FUNC FPE data balign 8 array skip 80 array1 word 10 20 3
  • (nasm x86实模式)如何在引导加载的扇区中写入/读取字符串?

    我正在使用 NASM 为 x86 实模式编写一个最小操作系统 用于教育目的 我想使用 512 字节引导扇区加载包含操作系统其余部分的更大扇区 我已经成功创建了一个加载另一个扇区的引导扇区 但我似乎无法在加载的扇区中写入 读取字符串 这是我的
  • 尝试理解 printf() 的 gcc 汇编输出

    我正在尝试学习如何理解汇编代码 因此我一直在研究 GCC 的汇编输出以获取一些愚蠢的程序 其中之一只不过是int i 0 我现在或多或少完全理解了其中的代码 最大的困难是理解散布的 GAS 指令 无论如何 我向前迈了一步并添加了printf
  • _addcarry_u64 和 _addcarryx_u64 与 MSVC 和 ICC

    MSVC 和 ICC 都支持内在函数 addcarry u64 and addcarryx u64 根据英特尔的内在指南 https software intel com sites landingpage IntrinsicsGuide
  • 内存映射图形输出

    我正在探索使用内存映射图形绘制像素和线条 我在 Windows 的 Textpad 中使用 TASM 当我单击 运行 时 整个屏幕变成蓝色 就是这样 没有绘制像素 model small stack data saveMode db xVa
  • 汇编PC相对寻址模式

    我正在研究数据路径 并一直在尝试理解分支指令 这就是我的理解 在 MIPS 中 每条指令都是 32 位 这是 4 个字节 所以下一条指令将是四个字节之外 举个例子 我说PC地址是128 我的第一个问题是理解这个128意味着什么 我目前的信念
  • Nasm 点状标签

    我对 TASM 很熟悉 但对 NASM 不太了解 我读过 NASM 允许使用本地标签 这些标签在名称前用点表示 例如 代码 loop some code jmp loop 定义一个名为 loop的局部标号 引用的地址在后面的jmp指令中使用
  • x86-64 AMD 上 CALL 指令的操作数生成

    以下是示例程序 objdump 的输出 080483b4

随机推荐

  • 描述 Assembly 中的 pop [重复]

    这个问题在这里已经有答案了 我正在学习IA32 当我思考什么时popl DEST我认为指令正在做以下事情 movl esp DEST addl 4 esp 但当我想到popl esp 尽管这可能是一个毫无意义的指令 但我认为可能有更好的方法
  • 如何打印嵌入空值的字符串,以便用“(null)”替换“\0”

    我有一个使用 memcpy 组成的字符串 展开时 如下所示 char str AAAA x00 x00 x00 x11 x11 x11 x11 x00 x00 我想打印字符串中的每个字符 如果该字符为空 则打印出来 null 作为 0 的替
  • 带有全选复选框的可扩展列表视图:组项目单击和滚动错误

    我有一个 ExpandableListView 组名称旁边有一个复选框 展开时 子项目也带有复选框 假设我有 4 个组 有 50 个孩子 当展开一个组时 我单击全选复选框 一切正常 所有复选框都被选中 并在滚动时保持其状态 但是 如果我滚动
  • “ 远程服务器返回错误:(401) 未经授权”

    我正在尝试验证我的网址是否得到响应 换句话说 我正在尝试检查该网站的身份验证是否已成功 I used HTTP Request System Net WebRequest Create http example com HTTP Respo
  • 如何在 404 Tomcat 上重定向到外部网站

    我使用的是 spring 3 Tomcat 7 In web xml我已经定义了
  • TFS 构建定义未将 mvc 应用程序部署到 IIS

    我正在尝试使用 Visual Studio 的团队资源管理器和 TFS 创建构建定义以将 MVC 站点部署到 IIS 我遵循了名为 Team Foundation Server 2010 的持续部署 的 Pluralsight 教程 我从本
  • 使用 Java 从麦克风传输音频

    我正在开发一个项目 需要我将音频从客户端的麦克风流式传输到服务器 下面显示的代码是我写的 当我同时运行客户端和服务器代码时 音频不会实时传输 事实上 来自客户端的音频存储在缓冲区中 当我终止客户端代码的执行时 来自服务器缓冲区的音频将输出到
  • Java 不稳定的并发性

    好的 我刚刚读了这个问题你在 Java 中使用过 volatile 关键字吗 并且我使用易失性变量来停止循环 我也看过这个参考资料 http www javamex com tutorials synchronization volatil
  • 如何使用java流比较两个ArrayList并通过过滤器获取list1

    我有两个类型为 List 的列表 list1 和 list2 Term long sId int rowNum long psid String name List
  • 如何将 JSON 字符串转换为数组(PHP)?

    使用下面的代码来解码json categories json decode data categories categories gt data 我从哪里得到这个 categories id 1 name Utilities apps 89
  • 将两个单独的 wp 查询合并为一个查询以进行搜索

    目前 我的类别页面上有一个搜索栏 可以搜索产品标题 自定义帖子类型 或品牌分类 我可以让这两个独立工作 将任一参数传递给 WP Query 但是如果我尝试将它们数组合并在一起 则两者都不起作用 我所拥有的是 search sanitize
  • Base64 对文件进行编码并压缩

    我的目标是对文件进行编码并将其压缩到java中的文件夹中 我必须使用 Apache 的 Commons codec 库 我能够对其进行编码和压缩 并且工作正常 但是当我将其解码回原始形式时 看起来该文件尚未完全编码 看起来缺少一些零件 谁能
  • 中断命令 (ctrl+C) 不再在 macOS 上的 VS Code 1.78 终端中工作

    我打开的每个终端的顶部都是文本 bash 此 shell 中没有作业控制 我不记得在 VS Code 中更改过任何内容 但现在我无法再使用 control c 来停止终端中的内容 例如 npm run dev 和 node app js 在
  • 显示我的 nuget 的源代码

    我和我的团队构建了我们自己的框架 我们在许多项目中使用 我们曾经将框架的项目包含在所有其他项目中 但后来我们决定将框架放入 nuget 服务器上的 nuget 包主机中 以便我们可以在开发过程中更轻松地进行版本控制和传播框架 一切都工作正常
  • 将代码文件移动到项目中的另一个文件下

    我想将一个代码文件移到另一个相关文件组下 如下所示 如你所见 SingleObjectViewModel Commands cs隐藏在SingleObjectViewModel cs团体 在某些情况下它可能很有用 我已经创建了SingleD
  • 将 Spring Boot 应用程序部署到 AWS Beanstalk

    将 Spring Boot 项目 最好只是 jar 部署到 AWS Beanstalk 环境的最佳方式是什么 或者我应该将其转换为 WAR 并以这种方式部署 解决方案 基本上我所做的是这样的 创建了新类来告诉 Spring Boot 我的应
  • ASP.NET 中 GridView 中的内部网格线

    我有一个GridView在 ASP NET 2 0 中 我希望仅显示内部网格线 到目前为止 这是我的标记和 CSS
  • 离子启动画面未加载

    我已经检查并仔细检查了 Stack Overflow 以获得有关此问题的答案 但我真的找不到答案 我正在使用离子框架构建一个应用程序 虽然我以前从未遇到过这个问题 但由于某种原因 启动屏幕无法工作 我只是得到一个完全白色的屏幕 然后在加载初
  • iPhone中的应用程序间通信

    我只是想知道是否有任何方法可以从 iPhone 中的应用程序外部访问文档 例如 我希望能够将 Word 文档从邮件发送到我的应用程序 我怎样才能实现这个目标 提前致谢 这是一个博客 描述了 iOS 应用程序中应用程序间通信的工作原理 iOS
  • 在汇编中打印字符的三角形

    我正在开发这个练习 编写汇编程序 给定一个字符作为输入 输出一个大小为字符本身 5 x 5 的三角形 我有一个问题 因为当我输入一个字符时 这些字符没有形成三角形 而是打印了其他字符 我的输入 f 我的输出 期望的输出 f ff fff f