ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

实验2

2021-11-07 22:32:05  阅读:137  来源: 互联网

标签:data db mov 实验 ax bx ds


任务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

 

 

 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

 

 

 

 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

 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

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

    Ds=076E

    SS=07700

    CS=076C

2).

  data段的地址是X+2

  stack的段地址是X+4

1.5

1.

  16

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

 

 

虽然效果一样但是用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

 

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

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

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

相加前

 

相加后

 

 

 

 

 

任务4

 

 

 

 

 

 

执行前

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

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

 

执行后

 

 确实反转了

 

 

任务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

 

 

 

 

 

 

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

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

 

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

 

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

 

 

 

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

 

 

 

任务6

 

 

 

 

 

 

 

 

 

任务7

 

 

 

 

 

 

明天写明天写 猪脑过载了

 

标签:data,db,mov,实验,ax,bx,ds
来源: https://www.cnblogs.com/eunha005/p/15522079.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有