汇编语言
新时代&农民
这个作者很懒,什么都没留下…
展开
-
【汇编语言】王爽-1-5章小结
1.1-1.10 基础知识总结汇编指令是机器指令的助记符,同机器指令一一对应。每一种 CPU 都有自己的汇编指令集。CPU 可以直接使用的信息在存储器中存放。在存储器中指令和数据没有任何区别,都是二进制信息。存储单元从0开始顺序编号。一个存储单元可以存放8个bit,即8位二进制数。1Byte = 8bit,1KB = 1024Byte,1MB = 1024KB,1GB = 1024MB。每一个 CPU 芯片都有许多管脚,这些管脚和总线相连。也可以说,这些管脚引原创 2021-12-01 22:07:25 · 283 阅读 · 0 评论 -
【汇编语言】实验17-用逻辑扇区计算出面号、磁道号、扇区号,调用int 13h 中断例程进行实际读写
大佬帮我看看** 这个程序,我的目的是将扇区的内容读到指定的data段中,但是最终结果ah = FF,al = 01 ,al跟预期结果一样,但是ah=FF 按照书上的说法应该是操作失败了,相当于没做出来。还请懂的朋友帮我看看错在哪里了**源代码assume cs:codestack segment db 128 dup(0)stack endsdata segment db 512 dup(0)data endscode segmentstart: mov bx,stack m原创 2021-12-01 15:20:05 · 417 阅读 · 0 评论 -
【汇编语言】实验16-编写包含多个功能子程序的 int 7ch 中断例程
源程序assume cs:codestack segment db 128 dup(0)stack endscode segment start: mov ax,stack mov ss,ax mov sp,128 call init_reg call cpy_interrupt call set_interrupt mov ah,3 ;测试数据,3号功能,向前滚动一行 mov al,1 int 7ch mov ax,4c00h i原创 2021-11-30 17:55:25 · 210 阅读 · 0 评论 -
【汇编语言】实验15-在DOS下,按下‘A‘键后,除非不再松开,如果松开,就显示满屏幕的‘A’
源程序assume cs:codestack segment db 128 dup(0)stack endscode segmentstart: mov ax,stack mov ss,ax mov sp,128 call init_reg ;初始化寄存器 call cpy_int9 ;开始复制中断例程到 0000:0204 call set_int9 ;安装中断例程 mov ax,4c00h int 21原创 2021-11-29 14:14:44 · 207 阅读 · 0 评论 -
【汇编语言】实验14-访问CMOS RAM,以“年/月/日 时:分:秒”的格式,显示当前日期、时间
源程序assume cs:codecode segment unit: db 9,8,7,4,2,0 ;要访问的内存单元 mark: db '// :: 'start: call init_seg call visit_port_and_show ;访问端口数据显示日期,时间 mov ax,4c00h int 21h;======================================init_seg: mov ax,cs mov ds,ax原创 2021-11-27 21:58:13 · 823 阅读 · 1 评论 -
【汇编语言】检测点13.1-用7ch中断例程完成 jmp near ptr 指令的功能,用bx向中断例程传送转移位移
【过程】编写 7ch 中断例程将中断例程代码送入到 0000:0200处设置中断向量,将中断例程的入口地址 0000:0200 写入中断向量表中的7ch号表项中测试数据响应中断源程序assume cs:codedata segment db 'conversation',0data endscode segmentstart: call set_ds_es call cpy_interrupt call install_interrupt call test_data原创 2021-11-26 22:04:45 · 282 阅读 · 0 评论 -
【汇编语言】实验12-编写0号中断的处理程序
【过程】将中断处理程序放入0000:0200处将中断处理程序入口地址登记在中断向量表的对应表项中(除法溢出对应的中断类型码为0,它的中断程序的入口地址应该是从 0*4 地址单元开始存放,段地址在 0*4+2 字单元中)【源程序】assume cs:codecode segmentstart: mov ax,cs mov ds,ax mov si,offset do0 mov ax,0 mov es,ax ;es = 0000 mov di,200h原创 2021-11-25 17:25:22 · 522 阅读 · 0 评论 -
【汇编语言】实验11-编写子程序,字符串中的小写字母转变为大写字母
思想源程序;名称:letterc;功能:将以0结尾的字符串中的小写字母转变为大写字母;参数:ds:si 指向字符串首地址assume cs:codesgdatasg segment db "Beginners's All-purpose Symbolic Instruction Code.",0datasg endscodesg segmentbegin: mov ax,datasg mov ds,ax mov si,0 call letterc mov ax,4c0原创 2021-11-24 22:51:48 · 1622 阅读 · 0 评论 -
【汇编语言】实验10(3)-数值显示
源代码;子程序描述;名称:dtoc;功能:将word型数变为表示十进制数的字符串,字符串以0为结尾符;参数:ax=word型数据;ds:si指向字符串的首地址;返回:无;应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来。在显示我们调用本次实验的第一个子程序show_strassume cs:codedata segment db 10 dup(0) data endscode segmentstart: mov ax,12666 mov原创 2021-11-23 00:52:18 · 1652 阅读 · 0 评论 -
【汇编语言】实验10(2)-除法溢出
1.源程序,计算1000000/10;X:被除数,范围[0,FFFFFFFF] :dxax;N:除数,范围[0,FFFF] ;N = cx;H:X高16位,范围[0,FFFF] ;H = dx;L:X低16位,范围[0,FFFF] ;L = ax;int():描述性运算符,取商;rem():描述性运算符,取余数;公式:X/N=int(H/N)*65536+[rem(H/N)*65536+L]/N;先做公式的第一部分int(H/N)*65536; dx/cxassume c原创 2021-11-22 18:04:47 · 587 阅读 · 0 评论 -
【汇编语言】实验10(1)-编写子程序
1.题目2.源程序assume cs:codedata segment db 'welcome to masm!',0data endscode segmentstart: mov dh,11 ;行 mov dl,70 ;列 mov cl,24h ;颜色属性 mov ax,data mov ds,ax ;ds 指向数据段 mov si,0 ;用于迭代数据 call show_str ;IP入栈,调用子程序show_str原创 2021-11-20 20:38:56 · 447 阅读 · 0 评论 -
【汇编语言】实验七
第一遍摸索出来的,不是最优的,有点暴力解,刚入门1.题目2.我是这么理解的3.源程序assume cs:codesgdata segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','1994','1995' dd 16,22,38原创 2021-11-17 00:34:25 · 91 阅读 · 0 评论 -
【汇编语言】王爽实验6-将datasg段中的每个单词的前四个字母改为大写字母
1.题目2.源程序assume cs:codesg,ss:stacksg,ds:datasgstacksg segment dw 0,0,0,0,0,0,0,0stacksg endsdatasg segment db '1. display ' db '1. brows ' db '1. replace ' db '1. modify 'datasg endscodesg segmentstart: mov ax,data原创 2021-11-15 17:21:11 · 530 阅读 · 0 评论 -
【汇编语言】王爽实验5(6)将a段中的前8个字型数据,逆序存放到b段中
1.源程序assume cs:code,ss:copydataa segment dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffha endsb segment dw 0,0,0,0,0,0,0,0b endscopydata segment dw 0,0,0,0,0,0,0,0copydata endscode segmentstart: mov cx,8 mov bx,0 mov ax,a mov ds,a原创 2021-11-14 16:24:19 · 594 阅读 · 0 评论 -
【汇编语言】王爽实验5(5)
实验5 第5小题,编写code中的代码,将a段和b段中的数据依次相加,将结果保存在c段中Note:对于 c 段,我在编译的时候提示错误,名称改成了 d观察es寄存器的内容原创 2021-11-13 18:45:03 · 385 阅读 · 0 评论 -
【汇编语言】王爽实验4-[bx]和 loop的使用
(1)编程,向内存0:200~0:23F 依次传送数据0~63用编辑器写源程序编译—连接 生成可执行文件在DOSbox中用 debug t2.exe 观察各个寄存器的内容1.用编辑器写源程序assume cs:codecode segment mov ax,0020H mov ds,ax mov bx,0 mov cx,64 s:mov ds:[bx],bl inc bx loop s mov ax,4C00H int 21Hcode endsend2.编译—连原创 2021-11-12 00:13:16 · 347 阅读 · 0 评论 -
【汇编语言】实验3-查看PSP内容
程序加载后,ds中存放着程序所在内存区的段地址,这个内存区的偏移地址为0,则程序所在的内存区的地址为 ** ds:0**这个内存区的前256个字节中存放得失PSP,DOS用来和程序进行通信。从256字节处向后的空间存放的是程序。从ds中可以得到PSP的段地址SA,PSP的偏移地址为0.则物理地址为SA*16+0当前 ds 为1C95,ds 加上256 个字节后,地址为 1C95*16 + 0100(256的十六进制)= 1CA50,所以CS:IP 的值为 1CA5:0000,也就是程序的入口地.原创 2021-11-10 22:34:13 · 2111 阅读 · 0 评论 -
【汇编语言】王爽第四章第一个程序
win7 系统,64位工具:编译器(masm)连接器(link)调试工具(debug)1.【源程序】:edit不能用,用的记事本写的2.修改文件名为 .asm 格式3.设置环境变量我的电脑——属性——高级系统设置——环境变量——path——masm路径4.【编译】打开 cmd,跳转到刚刚的文本路径下,命令 masm 1.asm如果执行成功,当前文件目录下会有一个目标文件 1.obj,此时编译完成;我的版本在执行masm时候,直接后面加文件名。有的直接运行masm就可以;原创 2021-11-10 17:19:43 · 235 阅读 · 0 评论 -
【汇编语言】查看主板生产日期,向显存单元写数据
1. 用Debug查看PC机主板上的ROM中的一个生产日期:在内存 FFFF0H ~ FFFFFH的某几个单元中;因为生产日期是在ROM中,只读不能写,不能改变数据;2.向内存从 B8100H 开始的单元中填写数据-e B810:0000 01 01 02 02 03 03 04 04...原创 2021-11-07 11:43:23 · 1940 阅读 · 1 评论 -
【汇编语言】实验1:查看CPU和内存
1.Debug的使用进入Debug用R命令查看CPU寄存器的内容当前 CS=1C8B,IP=0100,也就是说,内存1C8B:0100 处的指令为CPU当前要读取、执行的指令。3.修改ax寄存器的值4.命令 “d 1000:0”,列出1000:0处的内容;debug列出了 1000:0~1000:7F 中的内容;左边是每行的起始地址;右边是每个内存单元中的数据对应的可显示的ASCII码字符。如下图,第一行 十六进制 72,对应的ASCII码的字母是 ‘s’5.用命令**“e 1原创 2021-11-07 00:48:53 · 681 阅读 · 0 评论 -
【汇编语言】win10 安装debug
这里写自定义目录标题希望有所帮助!1.下载DOSBoxdosbox连接地址2.debug文件链接:https://pan.baidu.com/s/1WzmHziHBbtOM9tPK2OrpLw提取码:debu3.dosbox直接默认安装在C盘4.masm也放在C盘5.打开文件,至最后一行,加入以下代码6.启动桌面快捷DOSBox7.出现如下表示成功希望有所帮助!...原创 2021-11-06 18:48:39 · 281 阅读 · 0 评论