实验4 8086标志寄存器及中断
实验4 8086标志寄存器及中断
实验任务1:
add指令零标志位为0,进位标志位为1;
Inc指令零标志位为0,进位标志位为0;
1.不可以更换,由于Inc不会对进位标志位产生改变,而add会改变进位标志位。在上面代码中使用adc做加法会加上进位标志位。
2.做加法前

加法后

实验任务2:

1.从键盘获取输入的字符,当输入字符为#时停止接收。
2.换行
3.将从键盘获取到的字符输出到屏幕上,
实验任务3:
assume cs:code,ds:data,ss:stack data segment x dw 91, 792, 8536, 65521, 2021 len equ $ - x data ends stack segment str1 dw 5 dup(?) stack ends code segment start: mov ax,data mov ds,ax mov ax,stack mov ss,ax mov si,offset x mov cx,5 mov sp,10 s: mov ax,ds:[si] mov di,0 s1: mov dx,0 mov bx,10 div bx or dl, 30h push dx inc di add ax,0 jne s1 s3: mov ah, 2 pop dx int 21h dec di cmp di, 0 jne s3 call printSpace inc si inc si loop s mov ah, 4ch int 21h printSpace: mov dl,' ' mov ah,2 int 21H ret code ends end start

实验任务4:
assume ds:data, cs:code data segment str db "assembly language, it's not difficult but tedious" len equ $ - str data ends code segment start: mov ax,data mov ds,ax mov si,offset str mov cx,len s: call strupr loop s mov ax, 4c00h int 21h strupr: mov al,ds:[si] cmp al,61h jb s1 cmp al,7Ah ja s1 and al,11011111B s1: mov ds:[si],al inc si ret code ends end start


实验任务5:
assume cs:code, ds:data data segment str1 db "yes", '$' str2 db "no", '$' data ends code segment start: mov ax, data mov ds, ax mov ah, 1 int 21h mov ah, 2 mov bh, 0 mov dh, 24 mov dl, 70 int 10h cmp al, '7' je s1 mov ah, 9 mov dx, offset str2 int 21h jmp over s1: mov ah, 9 mov dx, offset str1 int 21h over: mov ah, 4ch int 21h code ends end start


功能:对输入的字符进行判断,当输入7时,输出yes,当输入4时,输出no。
实验任务6:

中断,收到中断信息后,会专区执行该中断信息的处理程序。
软中断,通过编号跳转到预先设置好的子程序中,子程序运行结束之后返回到原程序中的中断位置。

浙公网安备 33010602011771号