微机原理及接口技术 看源程序答题

来源:百度知道 编辑:UC知道 时间:2024/05/29 02:12:29
data segment
x db 4
y db 3
z db ?
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov al,x
add al,y
mov z,al
add z,30h
mov dl,z
mov ah,2
int 21h
mov ah,4ch
int 21h
code ends
end start

此程序实现了什么功能 画出流程图 。结果是什么 结果存放在什么地方。 为什么指令add z,30h能实现将结果转换为ASC码 。数学运算指令中ADD ADC均为加法指令 ,他们的功能分别是什么,有什么区别?

希望微机高手给予解答 这里谢过了

data segment //数据段定义
x db 4
y db 3
z db ?
data ends //数据段结束
code segment //代码段
assume cs:code,ds:data //代码段对应cs栈,数据段对应ds栈
start: mov ax,data //数据段的偏移地址送ax
mov ds,ax //ax中存放的数据段偏移地址送到ds栈,可理解为同步
mov al,x //数据x送入AX低8位寄存器AL
add al,y //数据y和数据x相加后覆盖AX低8位寄存器AL中的内容
mov z,al //相加结果赋值给z
add z,30h //结果z加上30H(转化成ASCII码)
mov dl,z //调用DOS中断在屏幕上显示
mov ah,2
int 21h
mov ah,4ch
int 21h
code ends //代码结束
end start

为什么指令add z,30h能实现将结果转换成ASC码?
答:这个你要看ASCII码表,注意到数字那一栏,0的ASCII码是30H,1是31H,依此类推。

ADD和ADC均为加法指令,功能有什么区别?
答:ADD是不带进位将两者相加,ADC是带进位相加。具体还是自己做做实验。

微机原理一定要动手实验,理解各个指令的作用,相同和不同。才能学好。光听老师讲,死记硬背没有用。

屏幕输出数字‘7’;
结果‘37h’在DL中,数字加上30h就是该数对应的asc码(30~39h);
adc加法指令需要加上标志寄存器的cf进位位