计算机组成原理

【实验题】
1. 自编一个程序实现从键盘上任意输入1到9之间的一位数字n,求从1开始连续n个奇数的和。例如输入的数字是5,计算1+3+5+7+9。

DATA  SEGMENT
STR1  DB 'Input a Number 1-9,please$'
SUM   DW 0
ESTR  DB 'ERR EXIT$'       
DATA  ENDS
CODE  SEGMENT
ASSUME DS:DATA,CS:CODE
START:MOV AX,DATA
      MOV DS,AX
      MOV AH,9    
      LEA DX, STR1
      INT 21H
      MOV AH,1    
      INT 21H           
      CMP  AL,'0'
      JL  ERR
      CMP  AL,'9'
      JG  ERR
      AND AL,0FH   ; (AL) AND 0FH→AL,
      MOV AH,0     ; ASCII码转换成了二进制数
      MOV CX,AX    ; (AX)→CX
      MOV AX,0     ;  AX的初值为0 
      MOV BX,1     ; BX的初值为1
NEXT: ADD AX,BX    ; (AX)+(BX)→AX
      ADD BX,2       ; (BX)+2→BX
      DEC CX       ; (CX)-1→CX
      JNZ NEXT     ; (CX)≠0转移到NEXT标号处
      MOV SUM,AX   ; (CX)=0,(AX)→SUM
      JMP EXIT
ERR: MOV  AH,9
      LEA DX, ESTR
      INT 21H       
EXIT: MOV AH,4CH  
      INT 21H     
      CODE  ENDS
      END  START


2. 反汇编写出源程序代码所存放的内存地址范围。
0B7A:0000-0B7A:003C
3. 在DEBUG状态下单步执行程序,写出每次IP寄存器的值。
0003 0005 0007 000B 000D
000F 0011 0013 0015 0017
0033 0035 0039 003B

4. 显示数据段的内存单元,写出运行结果。
-G 003B
Input a number 1-9, please3
AX=0009 BX=0007 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B77 ES=0B67 SS=0B77 CS=0B7A IP=003B NV UP EI PL ZR NA PE NC
0B7A:003B       B44C       MOV AH,4C

数字 3是从键盘输入的,程序运行到内存地址 0B7A:003B处停止执行,并显示出CPU各寄存器的内容,AX放的是结果。

你可能感兴趣的:(UP)