主题:[讨论]微机实验编程题!特急!!是高手的就进!!!
beisuai
[专家分:0] 发布于 2006-10-27 17:37:00
编程练习
(A) 在3500H单元开始中输入数据:09H(数据个数)12H、80H、78H、C8H、00H、00H、FEH、99H、34H,编写程序使其能分别求出数据区中的正数和负数以及零的个数,正数的个数放在3510H单元中,负数的个数放在3511H单元中,零的个数放在3512H单元中.
(B)利用INT 21H功能,在PC机上显示:“MY NAME IS ……………”.
回复列表 (共4个回复)
沙发
ll007 [专家分:20] 发布于 2006-10-27 20:31:00
第一个可以用cmp来分别比较嘛,大于0转到一个子程序,依此类推,
第二个应该不难吧用一个02H功能应该就可以了,显示时可以用cx循环一下。具体用法可以去查一下书。
板凳
yjjdwww [专家分:160] 发布于 2006-10-30 20:57:00
很基本,书上有...
3 楼
Dancing [专家分:70] 发布于 2006-10-31 00:28:00
B用ASCII码输出就可以鸟
不懂查表
4 楼
rryy [专家分:70] 发布于 2006-10-31 10:03:00
第一个用org 3500h存放数据。如
data segment
org 3500h
num db 09h
dat db 12H,80H,78H,C8H,00H,00H,FEH,99H,34H
x db 0 ;存放正数个数
y db 0 ;存放负数个数
z db 0 ;存放0的个数
data ends
再用cmp 指令与0比较,用0去减各个数,判断标志位zf,sf
第二个用09h系统指令,把字符串所在段基址放入ds,位移量放入dx
data segment
str db 'MY NAME IS …………$'
data ends
code segment
assume cs:code, ds:data
start:
mov ax, data
mov ds, ax
lea dx, str ;取str 的位移量
mov ah, 09h ;09h系统指令输出str
int 21h
mov ah, 4ch
int 21h
code ends
end start
我来回复