信工实验参考——《微机实验1——汇编程序上机环境的熟悉》

 一般来说,我贴上来的代码都是能直接跑的,如果不行可以邮箱交流1902946954@qq.com

仅供参考,微机的老师讲的很好,所以请还是要先自己完成咯。
免责声明,本人菜只因一只,内容仅供参考,错了不负责哈。

实验一汇编程序上机环境的熟悉

一、实验目的

  1. 学会使用汇编程序集成开发环境来编辑源文件(*.ASM)、调用MASM宏汇编程序对源文件进行汇编,获得目标程序(*.OBJ)、调用LINK连接程序将汇编后的目标文件(*.OBJ)连接成可执行的文件(*. EXE)。
  2. 学会使用DEBUG调试程序把可执行文件装入内存并调试运行,熟悉DEBUG命令。

二、实验内容

  1. 完成编辑源文件、汇编、连接、运行并调试。
  2. 实验过程
  3. 调试程序

三、上机记录及思考题

(1)实验一:查0~9平方表

1:源代码:

;sample 顺序结构查0~9平方表
        DATA   SEGMENT
INPUT  DB 'PLEASE INPUT X(0~9):$'
TABLE  DB 0,1,4,9,16,25,36,49,64,81
XX     DB ?
YY     DB ?	
        DATA   ENDS

STACK  SEGMENT PARA STACK 'STACK'
               DB 100 DUP (?)
STACK  ENDS

        CODE   SEGMENT
               ASSUME CS:CODE,DS:DATA
START  PROC FAR
               PUSH DS
               MOV AX,0
               PUSH AX
               MOV AX,DATA
               MOV DS,AX
               MOV AH,9
               LEA DX,INPUT
               INT 21H
               MOV AH,1
               INT 21H
               AND AL,0FH
               MOV XX,AL
               MOV BX,OFFSET TABLE
               MOV AH,0
			   MOV AL,XX
               ADD BX,AX
               MOV AL,[BX]
               MOV YY,AL
               RET
START  ENDP
         CODE   ENDS
END START

2:实验结果截图:

2)实验二:

2.1调试看内存

1:源代码:

DATA   SEGMENT
        BUFF   DB    79H,98H,23H,67H,0A8H
        MAX    DB    ?
        DATA   ENDS

        STACK  SEGMENT PARA STACK 'STACK'
               DB 100 DUP (?)
        STACK  ENDS

        CODE   SEGMENT
               ASSUME CS:CODE,DS:DATA,SS:STACK
        START: MOV AX,DATA
               MOV DS,AX

               MOV    CX,5
               LEA   SI,BUFF
               MOV  AL,[SI]
               DEC   CX
               INC     SI
            LP:  CMP   AL,[SI]
                  JGE   G1
                  MOV   AL,[SI]
            G1:   INC     SI
                  LOOP   LP
                  MOV    MAX,AL

                 MOV    AH,4CH
                 INT    21H

         CODE   ENDS
                 END START

2:实验结果截图:

2.2调试看内存。单步运行,分析每条指令的运行结果

1:源代码

DATA 	SEGMENT
A	DB		‘$’,10H
B	DB		‘COMPUTER’
COUNT 	EQU  $-B
CC	DW		1234H,0FFH
D	DB		5 DUP(?)
   E	DD		1200459AH
   ORG 0200H
		DB   10H,2AH,3CH,46H,59H,6BH		
DATA	ENDS
CODE   SEGMENT
            ASSUME CS:CODE,DS:DATA
   START: 	MOV 	AX,DATA
              MOV 	DS,AX
              
				MOV 	AL,A
				MOV  AH,COUNT

				MOV	DX,CC
MOV 	DX,CC+1
				MOV	DX,CC+2

				MOV	BX,OFFSET B
MOV 	CH,3[BX]
				MOV 	CX,3[BX]

              LEA   BX,D
			   	MOV  	D,’Y’
				MOV 	D+1,’O’
				MOV	D+2,’U’

				LES	DI,E
								
				MOV 	SI,0200H
				MOV 	AH,2[BX]
				MOV	AX,2[BX]

				MOV AH,4CH
              INT 21H
     CODE   ENDS
				END 	START

 

2:思考题:

  1. 单步运行时,哪条指令运行后才可以看数运行结果运行结果运行结果运行结果运行结果运行结果运行结果据段?请对比数据段的定义和数据段的实际分配情况,其中,COUNT分配存储单元了吗?请自己画数据段分配示意图,以柱状图的形式标注存储单元的逻辑地址和存储内容。

①MOV  DS,AX 之后

②count不分配存储单元.

③图示:

 

        2.哪几条指令运行后修改了数据段?请将修改前和修改后数据段分配情况分别拷屏。

 

3)实验三:

有两个无符号字节型数组,设数组元素个数相等,编程将数组中的对应元素相加,结果存入另一个内存区。

1) 不考虑进位。

①已知数据段的定义:

data segment

  org  2000h

  num1  db   5,23,10,100,200,150,50,86

  count equ   $-num1

  org  2010h

  num2  db   7,15,200,180,76,100,26,150

  org  2020h

  res   db    count dup(0)

  data  ends

②debug调试:修改num1和num2数组元素的值,运行看结果。

提示:-e2000

-d2000

1:源代码

DATAS SEGMENT
org  2000h
  num1  db 5,23,10,100,200,150,50,86
  count equ   $-num1
org  2010h
  num2  db 7,15,200,180,76,100,26,150
org  2020h
  res   db    count dup(0)
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV BX,00H
    MOV CX,08H
NEXT:
    MOV AL,num1[BX]
    ADD AL,num2[BX]
    MOV res[BX],AL
    INC BX
    LOOP NEXT
    MOV AH,4CH
    INT 21H
CODES ENDS
END START

2:实验结果截图

2) 考虑进位。

①已知数据段的定义:

data segment

  org  2000h

  num1  db   5,23,10,100,200,150,50,86

  count equ   $-num1

  org  3000h

  num2  db   7,15,200,180,76,100,26,150

  org  5000h

  res   dw    count dup(0)

  data  ends

②debug调试:修改num1和num2数组元素的值,运行看结果。

提示:-e2000

-d2000

1:源代码

DATAS SEGMENT
org  2000h
  num1  db 5,23,10,100,200,150,50,86
  count equ   $-num1
org  2010h
  num2  db 7,15,200,180,76,100,26,150
org  2020h
  res   dw    count dup(0)
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV SI,00H
    MOV CX,08H
    MOV DI,00H
NEXT:
    MOV AL,num1[SI]
    MOV AH,0
    MOV BL,num2[SI]
    MOV BH,0
    ADD AX,BX
    MOV res[DI],AX
    INC SI
    INC DI
    INC DI
    LOOP NEXT
    MOV AH,4CH
    INT 21H
CODES ENDS
END START


 

2:实验结果截图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值