汇编语言的问题(急)

来源:百度知道 编辑:UC知道 时间:2024/06/28 03:42:11
设自内存2000H开始存了20个带符号的字数据,统计其中正,负,零,的个数。并将结果放于1000H开始的单元中
8086的

10分的话简单提示你一下
首先,内存2000H开始存了20个带符号的字数据,在DATA段定义 BUF DW 219,281,...
用的时候可以MOV BX,0
mov AX.BUF[BX]取出来
统计的时候先和0比一下cmp ax,0
JE 是零
再用SHL逻辑左移,再用jc判断cf位也就是左移出来的最高位(符号位)是1跳转,这是负数,存负数个数的寄存器++,不是1不跳转,正数寄存器++
最后套个循环,20次,ok了

你用的什么芯片??

你搜一下已经解决的问题吧,我记得里面有这个问题的答案。

; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。
Code Segment
Assume CS:Code,DS:Code
; -------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -------------------------------------
Press_Key db 7,13,10,13,10,'The complated. Press any key to exit...$'
Start: push cs
pop ds
mov si,2000h ;数据地址
xor dx,dx ;DH=正数计数器,DL=负数计数器
xor bl,bl ;BL=0计数器
mov cx,20 ;元素个数