所有由zhufenghua发布的文章

软件工程的出现主要是由于?

答案:软件危机的出现

扩展:

软件危机是指计算机软件开发和维护过程中所出现的一系列严重问题。

软件危机出现的原因,是落后的软件生产方式无法满足迅速增长的计算机软件需求。

通俗来说,就是软件设计没有规范,导致代码难以开发、维护,另外还表现为开发成本高、产品质量低。

汇编dos中断之键盘输入?

汇编使用dos中断键盘输入数据,有2个功能号

  • mov ah, 01h ==》输入一个字符,并存储ASCII在al中
  • mov ah, 0ah ==》输入一个字符串,并存储ASCII在ds: dx内存地址中

输入一个字符代码调试

Code segment

	Assume cs:code

 Start: 

     Mov ah,01h

     Int 21h

     Mov ah,4ch

     Int 21h

Code ends

   End start

编译上面的代码,使用debug时,在将执行int 21时使用p命令取代t命令,即可输入,输入一个数如3,那么al的值将会变为33(3的16进制的ASCII就是33)

输入字符串代码调试

Code segment

	Assume cs:code

 Start: 

     Mov ah,0ah

     Int 21h

     Mov ah,4ch

     Int 21h

Code ends

   End start

使用debug调试上述程序,在执行到int 21时输入p命令

假设输入的是abcde这5个数,输入完毕后查看ds段,第3位开始是61,62,63,64,65(这是16进制的abcde的ASCII对应编码),那么为什么不是从0开始?

在输入字符串时,会在第一个字中存放输入的长度,观察第2位的值确实是05,可重复调试查看结果。

可以明确,输入的值存储的ds寄存器指定的段地址,那么偏移地址呢?通过调试发现是dx,可以通过指定dx偏移地址,比如mov dx, 3

8086标志位有哪些?

8086cpu的状态标志位寄存器FLAGS是一个16位寄存器,定义了9个标志位。

状态标志位

  1. 进位标志CF
  2. 奇偶标志PF
  3. 辅助进位标志AF
  4. 零标志OF
  5. 符号标志AF
  6. 溢出标志OF

控制标志位

  1. 方向标志DF
  2. 中断允许标志IF
  3. 跟踪标志TF

汇编如何判断运算结果为0?

在汇编中可以使用状态标志位的零标志(ZF)判断

  • 当 ZF 等于1,则运算结果为0
  • 当 ZF 为0,则运算结果不为0

通常在实际汇编程序中,会配合test和je指令使用

例如,test ax, ax是测试ax是否为0,它执行的是and运算但并不保存结果,则test ax, ax当且仅当ax为0条件成立,它会影响零标志位ZF

je指令会查看标志位ZF,若ZF=1则执行跳转,否则不跳转。例如 je stop_loop,当ZF=1跳转到标号stop_loop处。