汇编打印三角形

GLOBAL start

SECTION .text

start:

     mov rdx, output; 把字符串基地址存入rdx

     mov r8, 1; 初始化第一行的长度为1

     mov r9, 0;用于存储当前这一行已经打印了几个*了

line:

     mov byte [rdx], '*'; 写一个*

     inc rdx ; 往后偏移一个

     inc r9 ;  r9 增加一个

     cmp r9, r8; 判断一下*个数是不是小于行号

     jne line; 否则继续写

lineDone:

     mov byte [rdx], 10; 写一个换行符

     inc rdx; rdx向后偏移一个

     inc r8; r8行号增加一个

     mov r9, 0 ;初始化当前行写的*个数为0

     cmp r8, maxlines ;检查是不是达到了最大行数

     jng line; 如果是就跳出,否则跳到line位置

done:

     mov rax, 0x02000004; rax里面存放写函数地址

     mov rdi, 1; file handle 1 is stdout rdi存放参数,1表示stdout

     mov rsi, output; rsi 存放字符串参数

     mov rdx, dataSize;   rdx传递字符串长度

     syscall ;调用系统调用 int 60h

     mov rax, 0x2000001;  exit

      system ;call for exit

     xor rdi, rdi

     syscall

SECTION .bss 定义bss段

maxlines equ 8 

dataSize equ 44

output: resb dataSize

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ID, int score) { this.studentID = studentID; this.courseID = courseID; this.score = score; } // getter和setter方法 public String getStudentID() { return studentID; } public void setStudent在汇编语言中,可以使用BIOS中断来打印字符,具体操作如下: 1. 将字符的ID(String studentID) { this.studentID = studentID; } public String getCourseID() { return courseIDASCII码存储到寄存器AL中; 2. 将打印字符的BIOS中断号0x10存储到; } public void setCourseID(String courseID) { this.courseID = courseID; } public int get寄存器AH中; 3. 调用BIOS中断,打印字符。 下面是一个简单的汇编程序Score() { return score; } public void setScore(int score) { this.score = score; } } //示例: ``` section .data msg db 'Hello, World!',0 section .text global _start _start 主程序 public class Main { public static void main(String[] args) { // 创建学生对象 Student student =: ; 打印字符串 mov ah, 0x0e ; 设置打印字符的BIOS中断号 mov si, msg ; 存储字符串地址到寄存器SI print: lodsb ; 从SI指向 new Student("1", "张三", "男", 20, "1"); // 创建教师对象 Teacher teacher =的内存地址读取字符,存储到AL中 cmp al, 0 ; 判断是否到字符串结尾 new Teacher("1", "李四", "男", 35, "教授", "1"); // 创建课程对象 je exit ; 如果是,跳出循环 int 0x10 ; 调用BIOS中断,打印字符 Course course = new Course("1", "Java程序设计", 3, "1"); // 创建班级对象 Class jmp print ; 继续打印下一个字符 exit: ; 程序结束 mov ah, 0x class1 = new Class("1", "计算机科学与技术1班", 2019, "计算机科4c ; 设置程序结束的BIOS中断号 xor al, al ; 设置返回码为0 int 学与技术", "1"); // 创建选课对象 SelectCourse selectCourse = new SelectCourse("1", "0x21 ; 调用BIOS中断,结束程序 ``` 这个程序可以打印字符串"Hello, World!"1", 90); // 输出学生信息 System.out.println("学生信息:"); System.out.println("学,其中使用了lodsb指令从字符串中读取字符,使用了cmp指令判断是否到字符串结尾,使用了生ID:" + student.getStudentID()); System.out.println("姓名:" + student.getName()); System.out.println("性别:"jmp指令控制循环。最后使用了xor指令将AL寄存器清零,使用了int指令调用BIOS中断结束程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值