
汇编
Co丿Hx
西南石油大学CS研究生。发表ccfc类论文两篇,专利一项,获国家奖学金等多项奖学金,现就职于招银网络科技。
展开
-
汇编编译环境的建立
MASM是Microsoft Macro Assembler 的缩写,是微软公司为x86 微处理器家族开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm,是Windows下开发汇编的利器。使用方法:如果你的电脑是X86,那么没有太多限制,直接网上现下载masm5.0,并将所有文件解压到非原创 2016-09-05 19:11:15 · 370 阅读 · 0 评论 -
汇编语言寻址方式
汇编语言的寻址方式MOV 是汇编语言用得最多的语句 他的使用方法 是 MOV 目的地址,源地址下面便通过MOV来介绍汇编语言的几种寻址方式1. 立即寻址 MOV AX,1234H2.寄存器寻址 MOV SI,AX3.直接寻址 MOV AX,[1234H] ;[]相当于c语言的指针 语句的意思 段值 加上 偏移的1234H4.寄存器直接寻址 MOV AX,[SI]5原创 2016-09-19 19:32:52 · 2062 阅读 · 1 评论 -
汇编利用call后续区传递参数
code segmentassume cs:code;main函数用来测试下面函数功能main procstart: call definedAdd dw 10 dw 20 mov ax,1000h mov ax,4c00h int 21h retmain endp;测试函数 利用call中断来传递参数definedAdd proc far push原创 2016-10-19 10:26:29 · 1115 阅读 · 0 评论 -
汇编实现冒泡排序
;用汇编实现 冒泡排序data segmentary db 6,2,5,1,3,4,9,8,7aryCount dw $-arydata endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov bx,0mov cx,aryCountoutLoo原创 2016-10-13 16:54:31 · 771 阅读 · 0 评论 -
汇编输入一个10进制转化为16进制并存储在段寄存器ds中
;输入一个10进制 input decimal,value [0-65535] 2的16次方就是 dw 一个字;data segmentinputV dw 0data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov bx,10 ;作为乘10xor原创 2016-10-13 11:01:56 · 2042 阅读 · 0 评论 -
汇编常用int 21H系统功能调用
今天犯了一个特别2的问题 用了很长时间 原因是没有理解到汇编中 int 21H 中的 2号命令 其实 int21H 中的2号命令还是挺简单的 要把它当成字符操作 也就是 ASC码 操作 我一直把它当成16进制数来操作所以错了原创 2016-10-12 20:08:37 · 7735 阅读 · 0 评论 -
mov ah,1 int 21h
这两条指令是对DOS (磁盘操作系统)1 号功能的调用,从键盘上输入一个字符,将其对应字符的ASCII码送入AL中,并在屏幕上显示该字符。如果按下的是Ctrl+Break组合键,则终止程序执行。1号功能调用无须入口参数,出口参数在AL中。原创 2016-10-12 19:51:21 · 13717 阅读 · 2 评论 -
实现一个把十六进制数转换为对应ASCII码的程序
;实现一个把十六进制数转换为对应ASCII码的程序;思路 先把原来的数加30h 若加上30h之后大于39h 说明原来的数大于9 那么就再加上2h就是加7;先写结构然后在补充细节 details;convert hex to Ascdata segmenthex db 9h data endscode segmentassume cs:原创 2016-10-12 11:22:04 · 24880 阅读 · 0 评论 -
汇编循环实现两个8字节的数的加法
在汇编中默认的输入时10进制 比如 mov al,10 在内存中就会是0A 所以要在数后面加h表示16进制 mov al,10h代码data segmentx db 12h,34h,23h,45h,34h,56h,78h,90hy db 11h,11h,11h,11h,11h,11h,11h,11hsum db ?data endscode segmentassume cs:c原创 2016-09-26 16:55:52 · 5340 阅读 · 1 评论 -
汇编两个64位加法的实现
老师上课布置的作业实现64位加法的实现最开始事懵逼的 但是后面再 草稿本上画了内存 中的存放以及几个si :源地址寄存器bx:基址寄存器di:目的地址寄存器地址寄存器的使用再想了下就差不多写出来了 先贴出源代码 我会 一步一步 解释源代码 以及把 调试中的内存截图 给你们在64位上写汇编需要的dosbox 以及 masm一篇文章有写 然后此次比上次多得东西是debug原创 2016-09-26 11:15:34 · 10676 阅读 · 0 评论 -
汇编db dw dd
dbdb在汇编中表示一个byte,就是一个字节8位,每次读取数据时,读完一个偏移量加1dwdw在汇编中表示一个字,就是两个字节16位,每次读取数据时,读完一个偏移量加2dddd在汇编中表示一个双字,就是四个字节32位,每次读取数据时,读完一个偏移量加4...原创 2016-09-25 17:13:56 · 17260 阅读 · 3 评论 -
汇编选择分支结构
在80x86汇编中的选择分支机构还是比较重要吧 写哈到底是怎么实现的比如说 在c语言中if(x<y) x = y;else x = 0;在汇编中是mov ax,xcmp ax,yjnc amov y,axa:mov ax,0实际上是 执行 carry flag = x-y如果x如果x>y 即是 cf=0 judge no carry f原创 2016-10-10 16:37:12 · 1022 阅读 · 0 评论 -
汇编改写9号键盘中断为查询输出
intNum =9 ;中断向量号 exitKey ='x' ;循环的结束条件,按键X;******************************************************************************code segment assume cs:code,ds:code old9IEntryAddr dd 0 ;用于保存老的中断向量原创 2016-12-30 11:36:58 · 1037 阅读 · 0 评论