实验4 8086标志寄存器及中断

任务一:

调试结果,成功完成数据段中128位相加

实验4 8086标志寄存器及中断

 line31-34的4条inc指令

不能替换为add指令

原因:使用add会导致进位寄存器CF的值发生变化。NC->CY;

而inc指令不会改变进位寄存器CF的值.

 

 

 

任务二:

运行结果:

 实验4 8086标志寄存器及中断

 

 

 1.汇编指令代码line11-18,实现功能:

从键盘上读取输入的字符,并保存到ds:[si],每读入一个就判断是否为'#',如果是则不保存,转跳至标号next处执行;

如果不是则si + 1并继续读入下一个字符。

2.汇编指令代码line20-22,实现功能:

换行

3.汇编指令代码line24-30,实现功能:

打印'#'之前的输入内容

 

任务三:

运行结果:

 实验4 8086标志寄存器及中断

代码:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 assume ds:data, cs:code, ss:stack data segment        x dw 91,792,8536,65535,2021,0     len equ $ - x data ends stack segment     dw 8 dup(?) stack ends code segment start:        mov ax, data     mov ds, ax      mov ax, stack     mov ss, ax     mov sp, 16         mov cx, len/2 print:     mov ax, word ptr ds:[di]          add di, 2                     push cx               call printNumber       call printSpace             pop cx                loop print            mov ah, 4ch        int 21h printNumber:        mov bx, 0         s1:         mov bp, 10         mov dx, 0          div bp            push dx         inc bx         mov cx, ax          inc cx             loop s1      mov cx, bx        s2:            pop dx             add dl, 30h         mov ah, 2              int 21h        loop s2         ret printSpace:        mov ah, 2        mov dl, 20h        int 21h        ret code ends end start

 

 

任务四:

 运行结果:

实验4 8086标志寄存器及中断

 

 

 代码:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 assume cs:code,ds:data   data segment       str db "assembly language, it's not difficult but tedious"   len equ $ - str   data ends   stack segment          db 8 dup(?)   stack ends   code segment   start:           mov ax, data          mov ds, ax          mov si, 0          mov cx, len             call strupr              call printStr        mov ax, 4c00h          int 21h strupr :              push cx          push si          transform:              mov al, ds:[si]       cmp al, 97        jl continue         cmp al, 122        jg continue          and al, 0dfh          mov ds:[si], al   continue:              inc si               loop transform       pop si          pop cx             ret          printStr:          push cx         push si     print:          mov ah, 2              mov dl, ds:[si]              int 21h              inc si          loop print           pop si                    pop cx          ret             code ends   end start  

  

任务五:

 实验4 8086标志寄存器及中断

 实验4 8086标志寄存器及中断

 该代码功能:

判断输入字符是否为7

是;在屏幕右侧输出yes

否;在屏幕右侧输出no

任务六:

运行结果:

 实验4 8086标志寄存器及中断

上一篇:P1093 [NOIP2007 普及组] 奖学金 AC代码及详解


下一篇:美团外卖Flutter动态化实践