先看自带示例;
执行完 09 行如下;bl, al,如你所想;
执行完 12 行,bl 被减去1,结果如你所想;
接下来按二进制输出结果,如下;
十进制14的二进制为1110,这就对了;
这段代码是按二进制输出:
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为输入的扩展码。
看另一个程序;
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
装入后,运行;提示错误;
原来;
用emulate8086汇编出现的问题:unterminated string;
emu8086不可以使用dup(?)来分配未初始化的单元…
把 num3 改为:num3 db 1;
最后结果覆盖了就好了;
运行起来;看一下;双击 data segment 一行;看到data区是在内存 07100 处;最终结果将放在 07102 ;
运行,看一下结果正确;07102 单元内容变为8;