主题:菜鸟和我一起写之三
a4099369
[专家分:140] 发布于 2006-11-25 13:34:00
现在 我们来写一个 ,已知学号,要查询英语成绩的,并把之放在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个回复)
沙发
风一般的女孩 [专家分:50] 发布于 2006-11-25 14:23:00
a4099369大哥 你的程序我还有些看不懂 帮我解释下可以吗
no db 10
这是怎么定义在存储器里面的 是下面这样的吗
no |_1__|
|_0__|
|_ __|
|_ __|
|_ __|
还是以ASC码存放在存储器里面的?比如
no |_31H_|
|_30H_|
|_ _ _|
|_ _ _|
|_ _ _|
我个人感觉都不是 如果是以ASC码存放在存储器里面 那又怎么会有mov al,no
这条指令呢 no是4个16进制数 而AL是8位 到底是怎么存放的呢?
板凳
书剑一心 [专家分:330] 发布于 2006-11-25 21:23:00
是的assii,但不是你所的那样.
no |_0AH_|
|_00H_|
|_ _ _|
|_ _ _|
|_ _ _|
所以用 mov al
3 楼
风一般的女孩 [专家分:50] 发布于 2006-11-25 22:13:00
书剑一心大哥 能告诉我为什么是这样吗 怎么成了 0A了 什么意思
4 楼
tunnyfox [专家分:30] 发布于 2006-11-26 10:15:00
[quote]书剑一心大哥 能告诉我为什么是这样吗 怎么成了 0A了 什么意思[/quote]
10D 用16位二进制表示是000 0000 0000 1010B 转为机器中16进制就是000AH 按照高高低低的存储原则就是
no |_0AH_|
|_00H_|
|_ _ _|
|_ _ _|
5 楼
风一般的女孩 [专家分:50] 发布于 2006-11-26 22:03:00
[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 楼
风一般的女孩 [专家分:50] 发布于 2006-11-29 16:50:00
没有人来帮我啊 我虽然不能给大家评价 但也会谢谢大家啊
我来回复