"Assembly Language" Third Edition Experiment 5

(1) Compile, link, load with Debug, track the following program, and then answer the question

   1:数据不变
   2:cs:076c
      ss:076b
      ds:076a
   3:data段段地址:X-2
     stack段段地址: X-1

Insert picture description here

(2)

  assume cs:code,ds:data,ss:stack
  data segment
  		dw 0123H,0456H
  data ends
  stack segment
  		dw 0,0
  stack ends

  code segment
  start:  mov ax,stack
   		  mov ss,ax
    	  mov sp,16

          mov ax,data
    	  mov ds,ax

    	  push ds:[0]
    	  push ds:[2]
    	  pop ds:[2]
    	  pop ds:[0]

    	  mov ax,4c00h
    	  int 21h
   code ends
   end start
   1:数据不变
   2:cs:076c
      ss:076b
      ds:076a
   3:data段段地址:X-2
     stack段段地址: X-1
   4:占用空间:N%16==0?N:N+1

(3)

   end start
   1:数据不变
   2.cs:076A
     ss:076E
     ds:076D
   3.data:X+3
     stack:X+4
   4.代码段程序可以运行,从上往下运行,cs:ip指向最上端开始部位

Insert picture description here

  5.编写程序,将a段和b段中的数据相加
  assume cs:code
  a segment
  	  db 1,2,3,4,5,6,7,8
  a ends

  b segment
      db 1,2,3,4,5,6,7,8
  b ends

  c segment
      db 0,0,0,0,0,0,0,0
  c ends

  code segment
  start:  mov ax,c
	      mov ds,ax
	      mov bx,0

	      mov cx,8
      s:  mov byte ptr [bx],a:[bx]
	   	  add byte ptr [bx],b:[bx]
	      inc bx
	      loop s

	      mov ax,4c00h
	      int 21h
  code ends
  ends start
  
  6.程序如下,编写code段中的代码,用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 0,0,0,0,0,0,0,0
  b ends

  code segment
  start:  mov ax,a
  		  mov ds,ax
  		    
  		  mov bx,0
  		  mov cx,8
  	  s:  push [bx]
  	      loop s
  	      
  	      mov bx,0
  	      mov cx,8
  	 s2:  pop b:[bx]
  	      loop s2

          mov ax,4c00h
          int 21h
  code ends
  end start

Guess you like

Origin blog.csdn.net/Xgggcalled/article/details/114368049