一个简单的汇编程序代码

来源:百度知道 编辑:UC知道 时间:2024/06/05 03:54:01
题目:试写出一个完整的数据段data_seg,它把整数5赋予一个字节,并把整数-1,0,2,5和4放在10字数组data_list的头5个单元中。然后,写出完整的代码段,其功能为:把data_list中头5个数中的最大值和最小值分别存入max和min单元中

答案:
data_seg segment
num db 5
data_list dw -1,0,2,5,4,5 dup(?)
max dw ?
min dw ?
data_seg ends
;----------------------------------
code_seg segment
main proc far
assume cs:code_seg,ds:data_seg
start: push ds ;设置返回DOS
sub ax,ax
push ax
mov ax,data_seg
mov ds,ax

mov cx,4 ;程序段开始
lea bx,data_list
mov ax,[bx]
mov max,ax
mov min,ax

rout1: add bx,2
mov ax,[bx]
cmp ax,max
jnge rout2
mov max,ax
rout2: cmp ax,min
jnle rout3
mov min,ax
rout3: loop rout1
ret
main endp
code_seg ends
;----------------------------------------
en

代码可以运行。
楼上的说得轻巧,数据既有正数又有负数,要是写代码让它输出的话,那代码很长的。
我不知道emu8086是什么来的,不过我在debug里面可以查啊
在debug里面运行,不要用g命令,用t命令,不断的按t、enter。等到寄存器CX的值为0的时候,就打入:d ds:0,再按enter。就可以看到很多数据。
max的偏移地址为0015(两个字节),min偏移地址为0017.
这样就找的了。。

你的程序正确,可以运行。
以你能写出这样的程序,应该也的可以写出在屏幕上输出max和min内容的程序吧。这样不就可以检查一下了吗?