ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-12-12 22:01:43  阅读:143  来源: 互联网

标签:8086 中断 mov si cx 寄存器 ax data ds


任务一:

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

 line31-34的4条inc指令

不能替换为add指令

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

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

 

 

 

任务二:

运行结果:

 

 

 

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

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

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

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

换行

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

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

 

任务三:

运行结果:

 

代码:

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

 

 

任务四:

 运行结果:

 

 

 代码:

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  

  

任务五:

 

 

 该代码功能:

判断输入字符是否为7

是;在屏幕右侧输出yes

否;在屏幕右侧输出no

任务六:

运行结果:

 

标签:8086,中断,mov,si,cx,寄存器,ax,data,ds
来源: https://www.cnblogs.com/rougierkwok/p/15680747.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有