汇编开发工具

转自:点击打开链接


  • 80x86的汇编器 NASM

    NASM是一个为可移植性与模块化而设计的一个80x86的汇编器。它支持相当多 的目标文件格式,包括Linux和'NetBSD/FreeBSD','a.out','ELF','COFF',微软16 位的'OBJ'和'Win32'。它还可以输出纯二进制文件。它的语法设计得相当的简 洁易懂,和Intel语法相似但更简...更多NASM信息

  • 汇编器 Yasm

    Yasm是一个完全重写的NASM汇编。目前,它支持x86和AMD64指令集,接受NASM和气体汇编语法,产出二进制, ELF32 , ELF64 , COFF , Mach - O的( 32和64 ) , RDOFF2 ,的Win32和Win64对象的格式,并生成STABS 调试信息的来源,DWARF 2 ,CodeView 8格式。...Yasm更多Yasm信息

    最近更新: Yasm 1.0.0 发布,汇编器 发布于 3年前

  • 汇编工具 FASM

    fasm(flat assembler)是一个纯粹用汇编语言写成,并采用自展技术的正在开发的的编译器,fasm最大的优点在于不需要额外的链接步骤而直接生成可执行文件,没有什么烦琐的伪命令,所以写出来的代码看起来十分干净.另外用fasm写16bit exe或com可能是非常好的选择,...更多FASM信息

  • 汇编开发工具 MASMPlus

    MASMPlus 是一个使用纯 MASM 编写的 MASM Integrate Develop Environment. 专业汇编程序员90%均使用 MASM,为它开发的编辑器非常多,其中最有名的是 RadASM, 而现在,真正能与 RadASM 同级的就只有 MASMPlus 了,理由是只有 MASMPlus 与 RadASM 一样编写了自定...MASMPlus更多MASMPlus信息

  • WIN32汇编编辑器 RadASM

    RadASM是一款著名的WIN32汇编编辑器,支持MASM、TASM等多种汇编编译器,Windows界面,支持语法高亮,自带一个资源编辑器和一个调试器。拥有较强的工程管理功能,加之众多插件的支持,使得它用汇编语言编写Windows软件变得得心应手。 RadASM Code Editor R...RadASM更多RadASM信息

  • 汇编集成开发环境 Fresh IDE

    Fresh IDE 是一个内置的 Flat 汇编编译器(FASM) 的可视化汇编语言集成开发环境。它完全兼容与FASM可以在编译时FASM的每一个版本。Fresh IDE 的主要目标是使编程,组装快速,高效,高层次的语言,没有牺牲小应用程序的大小和汇编语言的原始动力。它是一个...Fresh IDE更多Fresh IDE信息

    最近更新: Fresh IDE 2.1.6 发布,汇编集成开发环境 发布于 1个月前

  • 【免费】微软宏汇编器 MASM

    MASM 是 Microsoft Macro Assembler 的缩写,它是 微软 为 x86 微处理器家族,所写的一套宏组译器。它最初是用来发展在 MS-DOS 上面执行的软件,同时,它也该系统最流行的组译器。 它支援的宏很灵巧,既广泛又多样性,结构化程式的惯用语法,包含高阶架构式...更多MASM信息

  • NASM IDE开发环境

    NASM IDE开发环境,是为解决LINUX下开发NASM带来的麻烦,链接编译集成一体. LINUX的Assemble IDE开发环境.轻量级的assemble IDE. 代码高亮,补足,编译,链接,错误跳转,调试. 这个项目还继续开发中,欢迎大家的加入和测试以及使用. [注意]安装前需要先安装 DEEE...更多NASM IDE开发环境信息


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较复杂的汇编程序设计任务,但我会尽力回答你的问题。 首先,你需要了解一些汇编语言的基础知识,如寄存器、指令、内存等概念。然后,你需要安装一个汇编开发工具,如MASM,用于编写和运行汇编程序。 以下是一个简单的示例程序,展示如何在屏幕上显示一个表格,并自定义表格边框和背景颜色。 ``` .model small .stack 100h .data ;定义表格内容 table db 'Hello', 0ah, 'World', 0ah, '!', '$' ;定义表格背景颜色和字体颜色 bg_color equ 1 font_color equ 15 ;定义表格大小 table_width equ 20 table_height equ 5 .code main proc ;初始化屏幕 mov ah, 0 mov al, 3 int 10h ;设置背景颜色 mov ah, 0bh mov bh, 0 mov bl, bg_color int 10h ;绘制表格边框 mov ah, 0ch mov al, 205 mov bh, 0 mov cx, table_width mov dx, 0 int 10h mov cx, table_height mov dx, table_width mov ah, 0ch mov al, 186 int 10h mov ah, 0ch mov al, 205 mov cx, table_width mov dx, table_width+1 int 10h mov cx, table_height mov dx, 0 mov ah, 0ch mov al, 186 int 10h ;绘制表格内容 mov si, offset table mov cx, table_height mov dx, 1 next_row: ;设置字体颜色 mov ah, 0bh mov bh, 0 mov bl, font_color int 10h ;输出表格内容 mov ah, 9h mov bx, 0 mov al, 20 int 10h ;移动光标到下一行 add dx, table_width+2 cmp dx, 80 jle next_cell mov dx, 1 add si, table_width+2 next_cell: inc si loop next_row ;暂停程序 mov ah, 0 int 16h ;退出程序 mov ah, 4ch int 21h main endp end main ``` 程序的每一行代码含义如下: - `.model small`:声明程序模型为小模型,即使用64KB内存空间。 - `.stack 100h`:声明程序堆栈大小为100H,即256字节。 - `.data`:声明数据段。 - `table db 'Hello', 0ah, 'World', 0ah, '!', '$'`:定义表格内容,使用db指令定义一个字符串,以'$'结尾。 - `bg_color equ 1`:定义背景颜色,使用equ指令定义一个常量。 - `font_color equ 15`:定义字体颜色,使用equ指令定义一个常量。 - `table_width equ 20`:定义表格宽度,使用equ指令定义一个常量。 - `table_height equ 5`:定义表格高度,使用equ指令定义一个常量。 - `.code`:声明代码段。 - `main proc`:程序入口。 - `mov ah, 0`:将0赋值给寄存器ah,用于初始化屏幕。 - `mov al, 3`:将3赋值给寄存器al,用于设置屏幕分辨率为80x25。 - `int 10h`:调用BIOS中断10h,用于初始化屏幕。 - `mov ah, 0bh`:将0bh赋值给寄存器ah,用于设置背景颜色。 - `mov bh, 0`:将0赋值给寄存器bh,表示当前页。 - `mov bl, bg_color`:将背景颜色赋值给寄存器bl。 - `int 10h`:调用BIOS中断10h,用于设置背景颜色。 - `mov ah, 0ch`:将0ch赋值给寄存器ah,用于绘制字符。 - `mov al, 205`:将205赋值给寄存器al,表示绘制水平线。 - `mov bh, 0`:将0赋值给寄存器bh,表示当前页。 - `mov cx, table_width`:将表格宽度赋值给寄存器cx。 - `mov dx, 0`:将0赋值给寄存器dx,表示绘制水平线的起始列。 - `int 10h`:调用BIOS中断10h,用于绘制水平线。 - `mov cx, table_height`:将表格高度赋值给寄存器cx。 - `mov dx, table_width`:将表格宽度赋值给寄存器dx,表示绘制竖直线的起始列。 - `mov al, 186`:将186赋值给寄存器al,表示绘制竖直线。 - `int 10h`:调用BIOS中断10h,用于绘制竖直线。 - `mov ah, 0ch`:将0ch赋值给寄存器ah,用于绘制字符。 - `mov al, 205`:将205赋值给寄存器al,表示绘制水平线。 - `mov cx, table_width`:将表格宽度赋值给寄存器cx。 - `mov dx, table_width+1`:将表格宽度+1赋值给寄存器dx,表示绘制水平线的起始列。 - `int 10h`:调用BIOS中断10h,用于绘制水平线。 - `mov cx, table_height`:将表格高度赋值给寄存器cx。 - `mov dx, 0`:将0赋值给寄存器dx,表示绘制竖直线的起始列。 - `mov al, 186`:将186赋值给寄存器al,表示绘制竖直线。 - `int 10h`:调用BIOS中断10h,用于绘制竖直线。 - `mov si, offset table`:将表格内容的偏移地址赋值给寄存器si。 - `mov cx, table_height`:将表格高度赋值给寄存器cx。 - `mov dx, 1`:将1赋值给寄存器dx,表示输出表格内容的起始列。 - `mov ah, 0bh`:将0bh赋值给寄存器ah,用于设置字体颜色。 - `mov bh, 0`:将0赋值给寄存器bh,表示当前页。 - `mov bl, font_color`:将字体颜色赋值给寄存器bl。 - `int 10h`:调用BIOS中断10h,用于设置字体颜色。 - `mov ah, 9h`:将9h赋值给寄存器ah,用于输出字符串。 - `mov bx, 0`:将0赋值给寄存器bx,表示输出字符串的页号。 - `mov al, 20`:将20赋值给寄存器al,表示输出字符串的长度。 - `int 10h`:调用BIOS中断10h,用于输出字符串。 - `add dx, table_width+2`:将表格宽度+2加到寄存器dx中,表示移动光标到下一个单元格。 - `cmp dx, 80`:将80与寄存器dx中的值进行比较。 - `jle next_cell`:如果寄存器dx中的值小于等于80,则跳转到next_cell标签。 - `mov dx, 1`:将1赋值给寄存器dx,表示移动光标到下一行的起始列。 - `add si, table_width+2`:将表格宽度+2加到表格内容偏移地址中,表示移动到下一行的起始位置。 - `next_cell:`:标签,用于跳转。 - `inc si`:将表格内容偏移地址加1,表示移动到下一个字符。 - `loop next_row`:循环,用于输出表格内容。 - `mov ah, 0`:将0赋值给寄存器ah,表示读取键盘输入。 - `int 16h`:调用BIOS中断16h,用于暂停程序。 - `mov ah, 4ch`:将4ch赋值给寄存器ah,用于退出程序。 - `int 21h`:调用DOS中断21h,用于退出程序。 希望这个示例程序能够帮助你理解汇编语言程序设计的基本原理和技巧。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值