汇编语言及应用——程序设计

1、 建立汇编语言源程序.ASM

建立好的源文件以 EX_1.ASM 为文件名存盘
运行程序,显示如下:
在这里插入图片描述
调试程序,用e命令更改第二个字符串内容,再用G命令运行程序,结果输出:MATCH!
如下图所示:
在这里插入图片描述
2、完成课堂例题,并用 DEBUG 运行,观察结果。

data segment 
X db 6 
Y db ? 
data ends 
code segment 
assume cs:code,ds:data 
start::
 mov ax,data
 mov ds,ax
 mov al,x
 mov y,5
 add y,al
mov ah,4ch
int 21h
 code ends
end start

提示:运行以上程序,进入调试窗口, 用 U 命令显示程序,找到程序结束处的地址,用 G
命令执行程序,用 D 命令检查数据段中的运行结果。
在这里插入图片描述
X db 6 //X初始值为6
Y db ? //Y初始值为?
mov al,x //将X的值,即6传递给AL
mov y,5 //将5传递给y
add y,al //将y与al的值两者相加后,即B传给y
mov ah,4ch //将4C传给AX的高八位,所以最后AX的值由4C和06组成,即4C06
在这里插入图片描述
在这里插入图片描述

2、学习数据传送指令和算术运算指令的用法;掌握数据定义伪指令的格式,会用DEBUG中的D命令观察DB、DW、DD存储数据的格式;熟悉汇编语言的基本框架,掌握编写汇编语言程序的基本方法。

示 例
源程序如下:

data segment
   a  db  10      db一个字节   dw两个字节,一个字
   b  db  20
   c  db  30,40,50     //变量名对应了偏移地址,即a,b,c,c+1,c+2
data  ends
code  segment
     assume  cs:code,ds:data
start:
       mov ax,data
       mov ds,ax   //把data段的首地址送给ds
       mov al,c+1  //把c+1字节地址单元的内容(就是40)送给al,直接寻址
       add al,c   //实现了c和c+1的求和,即70,放在al中
       mov a,al     //把计算结果al里面的东西拿出来,放在a中,a=70,即46H
       mov al,c+1
       add al,c+2  实现了c+1和c+2的求和,即90,放在al中
       mov b,al   把计算结果al里面的东西拿出来,放在b中,b=90,即5AH
       add c,10   //c里面的数+10,送在c中,c=40  即28H
       add c+1,20   //c+1里面的数+20,送在c+1中,c+1=60  即3cH
       add c+2,30    //c+2里面的数+23,送在c+2中,c+2=80  即50H
exit:  mov ah,4ch
       int 21h   //退出程序
code ends
       end start

阅读程序,试问程序执行到exit时,字单元A、B、C、C+1、C+2中的内容各是什么?
在这里插入图片描述
字节单元:46 5A 28 3C 50
字单元:5A46 285A 3C28 503C 0050

1、 通过debug命令将上面的程序写入内存,追条执行,根据指令执行后的实际运行情况填空。

MOV AX,0FFFFH
	MOV DS,AX

	MOV AX,2200
	MOV SS,AX
	
	MOV SP,0100
	
	MOV AX,[0]        ; AX=C0EA
	ADD AX,[2]         ;AX=C0FC
	MOV BX,[4]        ;BX=30F0
	ADD BX,[6]         ;BX=6021
	
	PUSH AX       ;SP=00FE ; 修改的内存单元的地址是2200:00FE,内容为C0FC
	PUSH BX       ;SP=00FC ; 修改的内存单元的地址是2200:00FC,内容为6021
	POP AX        ;SP=00FE ; AX=6021
	POP BX        ;SP=0100 ; BX=C0FC
	
	PUSH [4]       ;SP=00FE ; 修改的内存单元的地址是2200:00FE,内容为30F0
	PUSH [6]       ;SP=00FC ; 修改的内存单元的地址是2200:00FC,内容为2F31

2、 x、y、z 均为双精度数,分别存放在地址为X, X+2; Y, Y+2;Z, Z+2的存储单元中,编程实现 x + y + 24 - z → w ,并用W, W+2单元存放w.

假设x,y,z为0101,0202,0303
程序如下:

data segment
    X dw 01,01
Y dw 02,02
Z dw 03,03
W dw ?,?
data  ends
code  segment
     assume  cs:code,ds:data
start:
       mov ax,data
       mov ds,ax
       mov ax,X
       mov dx,X+2
           add ax,Y
           adc dx,Y+2
       add ax,24    
       adc dx,0
       sub ax,Z       
           sbb dx,Z+2
           mov W,ax     
       mov W+2,dx
exit:  mov ah,4ch
       int 21h
code ends
       end start

调试截图:
在这里插入图片描述
所以W=ax=4C18,W+2=dx=0000

3、 将下面程序补充完整,保存成.asm文件,将其生产可执行文件,运行后观测AX寄存器种的内容是什么。

data segment
   TABLE  dw  10,20,30,40,50
   ENTRY  dw  3
data  ends
code  segment
     assume  cs:code,ds:data
start:
       mov ax,data
       mov ds,ax
       mov BX,OFFSET TABLE
       add BX,ENTRY
exit:  mov ah,4ch
       int 21h
code ends
       end start

在这里插入图片描述
运行后观测AX寄存器中的内容是:4C70

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Xposed派大星是一个非常受欢迎的Android开发工具,它允许用户通过安装模块来定制和修改他们的设备。这个工具可以在不修改设备固件或刷机的情况下改变Android系统的行为。用户只需安装Xposed框架,并在框架上安装各种模块,就能更改系统的各个方面和功能。 Xposed派大星的使用非常简单,不需要专业的编程知识。在安装好框架后,用户可以选择性地下载和安装各种模块,这些模块可以实现诸如伪装应用标识、修改系统设置、去除广告、增加功能等等的目的。可以说,Xposed派大星为用户提供了在不更改设备固件的情况下个性化定制他们的Android设备的方式。 Xposed派大星的优点是它的灵活性和可定制性。用户可以根据自己的需求选择安装适合的模块,将Android设备调整得更加适合自己的使用习惯和喜好。另外,由于不需要刷机操作,所以使用Xposed派大星的风险相对较低,用户可以随时卸载模块或者禁用框架,恢复设备到初始状态。 然而,使用Xposed派大星也存在一些风险和注意事项。由于它可以修改系统的行为,不正确的使用或安装不可靠的模块可能导致系统不稳定甚至无法正常运行。因此,在使用Xposed派大星之前,用户应该对自己的操作有一定的了解,并注意安装来自可信来源的模块。 总体而言,Xposed派大星是一个功能强大且受欢迎的Android开发工具,它为用户提供了个性化定制Android设备的途径。用户可以根据自己的需求安装各种模块,定制自己的设备功能,但在使用时也要注意风险和慎重选择模块,以保障系统的稳定性和安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值