汇编语言(第三版)王爽著(实验六)实践课程中的程序

一、实验目的

      掌握在Debug中使用命令进行汇编指令编程及执行

二、实验设备与环境

计算机

DOS操作系统或 Windows 操作系统

MASM.EXE, LINK.EXE, DEBUG.COM 或宏汇编集成环境

三、实验内容、程序清单及运行结果

1.用标号完成问题7.2.

assume ds:data,cs:code

 

data segment

         s db 'welcome to masm!'

         d db 16 dup (0)

data ends

 

code segment

start:

         mov ax,data

         mov ds,ax

        

         sub bx,bx

         mov cx,16

  l:mov al,s[bx]

         mov d[bx],al

         inc bx

         loop l

        

         mov ax,4c00h

         int 21h

code ends

 

end start

汇编语言(第三版)王爽著(实验六)实践课程中的程序

汇编语言(第三版)王爽著(实验六)实践课程中的程序

使用标号,不仅确定了数据的地址还确定了数据的长度。s是源数据,d是目的地,

采用循环实现

2.编程,完成问题7.9中的程序。

assume cs:codesg,ss:stacksg,ds:datasg

 

stacksg segment

         dw 0,0,0,0,0,0,0,0

stacksg ends

 

datasg segment

         db '1. display      '

         db '2. brows        '

         db '3. replace      '

         db '4. modify       '

datasg ends

 

codesg segment

 

start:        mov ax,datasg

         mov ds,ax

         sub bx,bx

 

         mov ax,stacksg

         mov ss,ax

         mov sp,16

 

         mov cx,4

     s0:push cx

 

         sub si,si

         mov cx,4

      s:mov al,ds:[bx+3+si]

         and al,11011111b

         mov ds:[bx+3+si],al

         inc si

         loop s

 

         add bx,16

         pop cx

         loop s0

 

         mov ax,4c00h

         int 21h

 

codesg ends

 

end start

 

使用嵌套循环,需要注意cx的保护,这里用到了栈的功能:暂存。用and指令实现第五位变为0的运算。si实现列偏移,dx实现行偏移

 

汇编语言(第三版)王爽著(实验六)实践课程中的程序

汇编语言(第三版)王爽著(实验六)实践课程中的程序

汇编语言(第三版)王爽著(实验六)实践课程中的程序

3.定义下面的字节数组,数组长度为10,X1和X2的数据值自行定义,要求将X1和X2相同位置的数相加,结果存入X3:

X1 db ?

X2 db ?

X3 db ?

assume cs:code,ds:data

 

data segment

         x1 db 1,2,3,4,6,5,7,8,9,5

         x2 db 0,9,8,7,5,4,2,3,5,6

         x3 db 10 dup (0)

data ends

 

code segment

start:

         mov ax,data

         mov ds,ax

 

         sub bx,bx

         mov cx,10

  s:mov al,x1[bx]

         add al,x2[bx]

         mov x3[bx],al

         inc bx

         loop s

        

         mov ax,4c00h

         int 21h

code ends

 

end start

使用标号,不仅确定了数据的地址还确定了数据的长度,可以进行快速的定位。

使用循环实现相加和数据交换

汇编语言(第三版)王爽著(实验六)实践课程中的程序

汇编语言(第三版)王爽著(实验六)实践课程中的程序

  • 实验结论、实验体会

第一题:

使用标号,不仅确定了数据的地址还确定了数据的长度

第二题:

使用嵌套循环,需要注意用栈进行cx的保护。And:实现逻辑与的功能

第三题:

使用标号,可以进行快速的定位,不仅确定了数据的地址还确定了数据的长度。增强了代码的可读性,为以后团队协作打下了基础

其它实验:

汇编语言(第三版)王爽著(实验一)查看CPU和内存

汇编语言(第三版)王爽著(实验二)用机器指令和汇编指令编程

汇编语言(第三版)王爽著(实验三)编程、编译、连接、跟踪

汇编语言(第三版)王爽著(实验四)[bx]和loop的使用

汇编语言(第三版)王爽著(实验五)编写、调试具有多个段的程序

汇编语言(第三版)王爽著(实验六)实践课程中的程序

汇编语言(第三版)王爽著(实验七)寻址方式在结构化数据访问中的应用

汇编语言(第三版)王爽著(实验八)分析一个奇怪的程序

汇编语言(第三版)王爽著(实验九)根据材料编程

汇编语言(第三版)王爽著(实验十)编写子程序

汇编语言(第三版)王爽著(实验十一)编写子程序

汇编语言(第三版)王爽著(实验十二)编写0号中断的处理程序

DOSBox+MASM搭建汇编环境