在emu8086中学习汇编语言加减法程序

1 自带示例

先看自带示例;

在emu8086中学习汇编语言加减法程序_第1张图片

执行完 09 行如下;bl, al,如你所想;

在emu8086中学习汇编语言加减法程序_第2张图片

执行完 12 行,bl 被减去1,结果如你所想;

在emu8086中学习汇编语言加减法程序_第3张图片

接下来按二进制输出结果,如下;

在emu8086中学习汇编语言加减法程序_第4张图片

十进制14的二进制为1110,这就对了;

在emu8086中学习汇编语言加减法程序_第5张图片

这段代码是按二进制输出:    

mov cx, 8
print: mov ah, 2   ; print function.
       mov dl, '0'
       test bl, 10000000b  ; test first bit.
       jz zero
       mov dl, '1'
zero:  int 21h
       shl bl, 1
loop print

; print binary suffix:
mov dl, 'b'
int 21h

最后等待按下一个键结束程序,使用 int 16h;

键盘I/O中断调用有三个功能,功能号为0, 1, 2,功能号放在AH中。 
(1)0号功能调用 格式:MOV AH, 0
INT 16H
功能:从键盘读入字符送AL寄存器。执行时,等待键盘输入,一旦输入,字符的ASCII码放入AL中。若AL=0,则AH为输入的扩展码。 
 

2 把结果存在data区

看另一个程序;

data segment
  num1 db 3
  num2 db 5
  num3 db ?
data ends
code segment
assume cs:code,ds:data
 start:mov ax,data
    mov ds,ax
    mov al,num1
    add al,num2
    mov num3,al
    mov ax,4c00h
    int 21h
code ends
end start

在emu8086中学习汇编语言加减法程序_第6张图片

装入后,运行;提示错误;

在emu8086中学习汇编语言加减法程序_第7张图片

原来;

用emulate8086汇编出现的问题:unterminated string;
emu8086不可以使用dup(?)来分配未初始化的单元…

把 num3 改为:num3 db 1;

最后结果覆盖了就好了;

在emu8086中学习汇编语言加减法程序_第8张图片

    运行起来;看一下;双击 data segment 一行;看到data区是在内存 07100 处;最终结果将放在 07102 ;

在emu8086中学习汇编语言加减法程序_第9张图片

        运行,看一下结果正确;07102 单元内容变为8;

你可能感兴趣的:(汇编语言,add,sub,int,16h,segment,int,21h)