实验任务(1)~(4):
接下来是实验任务五
源代码如下:
assume cs:code a1 segment db 1,2,3,4,5,6,7,8 a1 ends b1 segment db 1,2,3,4,5,6,7,8 b1 ends c1 segment db 0,0,0,0,0,0,0,0 c1 ends code segment start: mov ax,a1 mov ds,ax mov bx,0 mov ax, c1 mov es,ax mov cx,8 s1: mov ax,[bx] mov es:[bx],ax inc bx loop s1 mov ax,b1 mov ds,ax mov bx,0 mov ax,c1 mov es,ax mov cx,8 s2: mov al,[bx] mov ah,0 add es:[bx],ax inc bx loop s2 mov ax,4c00h int 21h code ends end start
实验前查看数据如下:
试验后查看数据如下:
所以实现了数据相加的功能
实验任务六:
用push指令将a段中的前8个字型数据,逆序存储到b段中
汇编代码如下:
assume cs:code a segment dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh a ends b segment dw 8 dup(0) b ends code segment start: mov ax,a mov ds,ax mov bx,0 mov ax, b mov ss,ax mov sp,10h mov cx,8 s: push [bx] add bx,2 loop s mov ax,4c00h int 21h code ends end start
push操作前,查看逻辑段b的8个字单元信息截图:
执行后:
总结与体会:
写实验任务五时,实现加法一开始直接用:
s2: mov ax,[bx] add es:[bx],ax inc bx loop s2
得出实验结果是错的
后改为:
s2: mov al,[bx] mov ah,0 add es:[bx],ax inc bx loop s2
得到正确答案
要分清字节与字的区别