回 帖 发 新 帖 刷新版面

主题:菜鸟和我一起写之三

现在 我们来写一个 ,已知学号,要查询英语成绩的,并把之放在english变量里面
 data segment
tab db 80,81,82,83,84,85,86,87,88,89,90
no db 10
english db ?
 data ends
code segment
assume cs:code,ds:data
mov ax,data
mov ds,ax
mov al,no
mov ah,0
dec ax
mov bl,byte ptr tab[ax]
mov bh,0
mov ax,bx
mov english,ax
mov ax,4c00h
int 21h
code ends
end
你是不是觉得这个程序没有什么用,如果你想一想,我在键盘上输入一个学号,然后屏幕就会显示他英语的分数,这只是一个小小的子程序

回复列表 (共6个回复)

沙发


a4099369大哥  你的程序我还有些看不懂   帮我解释下可以吗 
no db 10
这是怎么定义在存储器里面的 是下面这样的吗
 
 no |_1__|
    |_0__|
    |_ __|
    |_ __|
    |_ __|
还是以ASC码存放在存储器里面的?比如

 no |_31H_|
    |_30H_|
    |_ _ _|
    |_ _ _|
    |_ _ _|

我个人感觉都不是  如果是以ASC码存放在存储器里面 那又怎么会有mov al,no
这条指令呢  no是4个16进制数  而AL是8位   到底是怎么存放的呢?

板凳

是的assii,但不是你所的那样.
 no |_0AH_|
    |_00H_|
    |_ _ _|
    |_ _ _|
    |_ _ _|
  所以用 mov  al

3 楼

书剑一心大哥  能告诉我为什么是这样吗 怎么成了 0A了  什么意思

4 楼

[quote]书剑一心大哥  能告诉我为什么是这样吗 怎么成了 0A了  什么意思[/quote]
10D 用16位二进制表示是000 0000 0000 1010B 转为机器中16进制就是000AH 按照高高低低的存储原则就是
 no |_0AH_|
    |_00H_|
    |_ _ _|
    |_ _ _|

5 楼

[quote][quote]书剑一心大哥  能告诉我为什么是这样吗 怎么成了 0A了  什么意思[/quote]
10D 用16位二进制表示是000 0000 0000 1010B 转为机器中16进制就是000AH 按照高高低低的存储原则就是
 no |_0AH_|
    |_00H_|
    |_ _ _|
    |_ _ _|
[/quote]

no db 10  这个是以字节形式定义的吧  如果是上面这样定义那不是10 这个十进制数占了两个字节?  怎么会这样呢? 我哪里理解错了 ?
mov al,no 这个指令是将什么传送给AL呢  AL是8位的啊

6 楼

没有人来帮我啊  我虽然不能给大家评价 但也会谢谢大家啊

我来回复

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