实验2

任务1

1-1

  1.

assume ds:data, cs:code, ss:stack
data segment
  db 16 dup(0)
data ends
stack segment
  db 16 dup(0)
stack ends
code segment
start:
  mov ax, data
  mov ds, ax
  mov ax, stack
  mov ss, ax
  mov sp, 16
  mov ah, 4ch
  int 21h
code ends
end start

实验2

 

 

 1).在debug中将执行到line17结束、line19之前时,

    Ds=076C

    SS=076D

    CS=076E

2).

  data段的地址是X-2 

  stack的段地址是X-1

 

1.2

  1.

assume ds:data, cs:code, ss:stack
data segment
  db 4 dup(0)
data ends
stack segment
  db 8 dup(0)
stack ends
code segment
start:
  mov ax, data
  mov ds, ax
  mov ax, stack
  mov ss, ax
  mov sp, 8
  mov ah, 4ch
  int 21h
code ends
end start

实验2

 

 

 

 1).在debug中将执行到line17结束、line19之前时,

    Ds=076C

    SS=076D

    CS=076E

2).

  data段的地址是X-2 

  stack的段地址是X-1

 

实验1.3

 

assume ds:data, cs:code, ss:stack
data segment
  db 20 dup(0)
data ends
stack segment
  db 20 dup(0)
stack ends
code segment
start:
  mov ax, data
  mov ds, ax
  mov ax, stack
  mov ss, ax
  mov sp, 20
  mov ah, 4ch
  int 21h
code ends
end start

实验2

 1).在debug中将执行到line17结束、line19之前时,

    Ds=076C

    SS=076E

    CS=0770

2).

  data段的地址是X-4 

  stack的段地址是X-2

 

 

1.4

assume ds:data, cs:code, ss:stack
code segment
start:
  mov ax, data
  mov ds, ax
  mov ax, stack
  mov ss, ax
  mov sp, 20
  mov ah, 4ch
  int 21h
code ends
data segment
  db 20 dup(0)
data ends
stack segment
  db 20 dup(0)
stack ends
end start

实验2

 1).在debug中将执行到line9结束、line11之前时,

    Ds=076E

    SS=07700

    CS=076C

2).

  data段的地址是X+2

  stack的段地址是X+4

1.5

1.

  16

2.

  实验2\

  实验2

  实验2

  实验2

 只有task1_4.asm可以正确执行。

  因为只有task1_4.asm在内存中可执行代码在最前面,不指名入口,cpu会把定义的数据也当成指定代码执行了。

 

 

任务2

assume cs:code
code segment
  mov ax, 0b800h   ;目标空间的段地址
  mov ds, ax

  mov ax, 0403H

  mov bx, 0f00h
  mov cx, 80  ;循环80次


s:  mov ds:[bx], ax  ;将ax的数据送入b800:bx
  add bx, 2  ;一次性写入两个所以bx+2,也可以写两个inc bx
  loop s

  mov ax, 4c00h
  int 21h
code ends
end

实验2

 

实验2

 

虽然效果一样但是用b指令的时候却发现结果不同

 

 

任务3

assume cs:code
data1 segment
db 50, 48, 50, 50, 0, 48, 49, 0, 48, 49 ; ten numbers
data1 ends
data2 segment
db 0, 0, 0, 0, 47, 0, 0, 47, 0, 0 ; ten numbers
data2 ends
data3 segment
db 16 dup(0)
data3 ends
code segment
start:
  mov ax,data1
  mov ds,ax
  mov ax,data2
  mov es,ax
  mov bx,0
  mov cx,10

s1:   mov al,es:[bx]
  add ds:[bx],al
  inc bx
  loop s1

  mov ax ,data3
  mov es,ax

  mov bx,0
  mov cx,10

s2:   mov al,ds:[bx]
  mov es:[bx],al
  inc bx
  loop s2

mov ah, 4ch
int 21h
code ends
end start

 实验2

data1对应的内存空间数据原始值为076C:0000

data2对应的内存空间数据原始值为076C:0010

data3对应的内存空间数据原始值为076C:0020

相加前

实验2

 

相加后

 

 

 实验2

 

 

任务4

 

 

 

 

 实验2

 

执行前

data1对应的内存空间数据原始值为076C:0000

data1对应的内存空间数据原始值为076C:0010

 实验2

执行后

实验2

 

 确实反转了

 

 

任务5

assume cs:code, ds:data
data segment
db 'Nuist'
db 2, 3, 4, 5, 6
data ends
code segment
start:
mov ax, data
mov ds, ax
mov ax, 0b800H
mov es, ax
mov cx, 5
mov si, 0
mov di, 0f00h
s: mov al, [si]
and al, 0dfh
mov es:[di], al
mov al, [5+si]
mov es:[di+1], al
inc si
add di, 2
loop s
mov ah, 4ch
int 21h
code ends
end start

 

 实验2

 

 

 实验2

 

line 19 的作用是对字母进行大写化

将【si】与11101111B进行逻辑与运算从而得到大写字母

 

改成db 5 dup(2)时结果为

实验2

 

 改成db 5 dup(5)时结果为

实验2

 

 

实验2

 

 此处数值对应各个字母的颜色,改成db X dup(X)时就变成了单一颜色。

 

 

 

任务6

 

 

 

 

 

 

 

 

 

任务7

 

 

 

 

 

 

明天写明天写 猪脑过载了

 

上一篇:实验二


下一篇:汇编语言.实验2