回 帖 发 新 帖 刷新版面

主题:[讨论]微机实验编程题!特急!!是高手的就进!!!

编程练习

(A)  在3500H单元开始中输入数据:09H(数据个数)12H、80H、78H、C8H、00H、00H、FEH、99H、34H,编写程序使其能分别求出数据区中的正数和负数以及零的个数,正数的个数放在3510H单元中,负数的个数放在3511H单元中,零的个数放在3512H单元中. 

(B)利用INT 21H功能,在PC机上显示:“MY NAME IS ……………”.

回复列表 (共4个回复)

沙发


第一个可以用cmp来分别比较嘛,大于0转到一个子程序,依此类推,
第二个应该不难吧用一个02H功能应该就可以了,显示时可以用cx循环一下。具体用法可以去查一下书。

板凳


很基本,书上有...

3 楼

B用ASCII码输出就可以鸟
不懂查表

4 楼

第一个用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

我来回复

您尚未登录,请登录后再回复。点此登录或注册